218 lines
8.6 KiB
JavaScript
218 lines
8.6 KiB
JavaScript
/**
|
|
* @package JEM
|
|
* @copyright (C) 2013-2024 joomlaeventmanager.net
|
|
* @copyright (C) 2005-2009 Christoph Lukes
|
|
* @license https://www.gnu.org/licenses/gpl-3.0 GNU/GPL
|
|
* @author Sascha Karnatz
|
|
*/
|
|
|
|
/**
|
|
* Comments in German
|
|
* Function: dieses Javascript ermoeglicht es automatisch die Metatags zu befuellen
|
|
*/
|
|
|
|
// Variablen werden als global definiert, da sie ueber mehrere Funktion hinweg genutzt werden
|
|
var $keyword; // Array - aufgeschlitete Variablen, welche einem HTML-Tag zugeordnet werden kann
|
|
var $keywords; // String - Verbindungsvariable zur noch nicht umgeschriebenen Variante der Keywords
|
|
var $manual_keywords = ""; // String - Speichert alle manuell eingefuegen Keywords ab
|
|
var $description; // String - die Beschreibung
|
|
var $description_vars; // Array - HTML - Tags, die mit einem onchange versehen werden
|
|
var $inputbox = ""; // String - es wird mit Hilfe dieser Variable ermittel, ob der User Beschreibung bzw. Keywords angeklickt hat
|
|
var $meta_error; // String - Fehler, der in der jeweiligen Sprache ausgegeben wird
|
|
|
|
function starter($msg) { // Funktion, welche beim Starten der Seite aufgerufen werden
|
|
get_keywords(); // leider funktionier window.onload nicht, da sonst die Popupfenster Fehler verursachen
|
|
get_description();
|
|
switchstart();
|
|
$meta_error = $msg;
|
|
}
|
|
|
|
function switchstart() { // Diese Funktion uebergibt alle relevanten Feldern ein onchange
|
|
try {
|
|
if ($keyword.length > 0) {
|
|
for (var i = 0; i < $keyword.length; i++) {
|
|
document.getElementById($keyword[i]).onchange = seo_switch;
|
|
}
|
|
}
|
|
if ($description_vars.length > 0) {
|
|
for (var i = 0; i < $description_vars.length; i++) {
|
|
document.getElementById($description_vars[i]).onchange = seo_switch;
|
|
}
|
|
}
|
|
} catch (e) {
|
|
//alert("Error occurred! JEM SEO - Javascript stopped!");
|
|
}
|
|
}
|
|
|
|
function seo_switch() { // Bei jeder Veraenderung werden beide Funktionen aufgerufen
|
|
include_keyword();
|
|
include_description();
|
|
}
|
|
|
|
function get_keywords() {
|
|
$keywords = $("#meta_keywords").val(); // Keywords auslesenen
|
|
var $Nullvalue = "[NULL]";
|
|
$manual_keywords = ""; // die Anzeige der nicht zuordbaren Variable wird geleert
|
|
$keyword = $keywords.split(","); // in eine Array aufspalten
|
|
for (var i = 0; i < $keyword.length; i++) { // und alle Leerzeichen entfernen
|
|
try { // Die Abfrage wird Fehlersicher gemacht
|
|
$keyword[i] = $keyword[i].replace(/ /g, "");
|
|
$keyword[i] = $keyword[i].replace(/\[/g, "");
|
|
$keyword[i] = $keyword[i].replace(/\]/g, "");
|
|
document.getElementById($keyword[i]).value; // ein Fehler wird provoziert, falls dieses Element nicht vorhanden ist
|
|
} catch (e) {
|
|
if ($manual_keywords != "") { // das nicht verwendete Keyword wird neu abgespeichert
|
|
$manual_keywords += ", ";
|
|
}
|
|
$manual_keywords += $keyword[i];
|
|
$keyword[i] = $Nullvalue; // Falls eine angegebene ID nicht vorhanden ist, wird diese aus dem Array entfernt
|
|
|
|
}
|
|
}
|
|
var $keyword_count = 0;
|
|
var $keyword_length = $keyword.length;
|
|
i = 0;
|
|
while (i < $keyword_length) {
|
|
if ($keyword[i] == $Nullvalue) {
|
|
$keyword[i] = $keyword[$keyword.length - $keyword_count - 1];
|
|
$keyword[$keyword.length - $keyword_count - 1] = $Nullvalue;
|
|
$keyword_length--;
|
|
$keyword_count++;
|
|
} else {
|
|
i++;
|
|
}
|
|
}
|
|
for (i = 0; i < $keyword_count; i++) {
|
|
$keyword.pop();
|
|
}
|
|
}
|
|
|
|
function get_description() {
|
|
$description = $("#meta_description").val(); // uebergebene Bechreibung wird aufgerufen und eingefuegt
|
|
if ($description != "") {
|
|
var Ergebnis = $description.split("["); // alle relevanten Teile werden getrennt
|
|
if (Ergebnis.length > 1) {
|
|
$description_vars = new Array(Ergebnis.length - 1); // Neues Array zum eintragen der geforderten Variablen wird angelegt
|
|
for (var i = 1; i < Ergebnis.length; i++) {
|
|
var inputarray = Ergebnis[i].substring(0, (Ergebnis[i].indexOf("]"))); // die einzelnen Variablen werden aus dem Satz ausgelesen
|
|
try { // Die Abfrage wird Fehlersicher gemacht
|
|
$description_vars[i - 1] = inputarray;
|
|
document.getElementById($description_vars[i - 1]).value;
|
|
} catch (e) {
|
|
$description_vars.pop();
|
|
|
|
}
|
|
}
|
|
} else {
|
|
$description_vars = new Array(0);
|
|
}
|
|
} else {
|
|
$description_vars = new Array(0);
|
|
}
|
|
}
|
|
|
|
function include_keyword() {
|
|
var $keywords = "";
|
|
for (var i = 0; i < $keyword.length; i++) { // Es werden alle keywords ausgelesen
|
|
if ($keywords != "") {
|
|
$keywords += ", ";
|
|
}
|
|
if (document.getElementById($keyword[i]).tagName == "SELECT") { // es wird unterschieden zwischen normalen Inputfeld und Selectfeld
|
|
if (document.getElementById($keyword[i]).value != 0) { // um auch korrekt abspeichern zu koennen wird das Komma richtig gesetzt
|
|
$keywords += get_selected_option($keyword[i]); // Auslesen des Wertes aus dem Selectfeld
|
|
} else {
|
|
$keywords += "[" + $keyword[i] + "]";
|
|
}
|
|
} else if (document.getElementById($keyword[i]).value != "") {
|
|
$keywords += document.getElementById($keyword[i]).value; //Auslesen des Wertes aus dem Inputfeld
|
|
} else {
|
|
$keywords += "[" + $keyword[i] + "]";
|
|
}
|
|
}
|
|
if ($manual_keywords != "") {
|
|
if ($keywords != "") {
|
|
$manual_keywords = ", " + $manual_keywords;
|
|
}
|
|
$keywords = $keywords + $manual_keywords;
|
|
}
|
|
document.getElementById("meta_keywords").value = $keywords;
|
|
}
|
|
|
|
function include_description() {
|
|
var desc_split, desc_value, desc_length;
|
|
var desc_output = $description; // Es wird die urspruengliche Ausgabe abgespeichert, da diese im spaeteren Verlauf geaendert wird
|
|
for (var i = 0; i < $description_vars.length; i++) {
|
|
desc_value = "[" + $description_vars[i] + "]"; // Der Wert wird auf Default gesetzt, damit er ausgegeben werden kann, falls ein deafulteinstellung gewaehlt wird
|
|
if (document.getElementById($description_vars[i]).tagName == "SELECT") { // es wird wieder unterschieden zwischen Select und Inputfeld
|
|
if (document.getElementById($description_vars[i]).value != 0) {
|
|
desc_value = get_selected_option($description_vars[i]);
|
|
}
|
|
} else {
|
|
if (document.getElementById($description_vars[i]).value != "") {
|
|
desc_value = document.getElementById($description_vars[i]).value;
|
|
}
|
|
}
|
|
desc_split = desc_output.split("[" + $description_vars[i] + "]"); // Der Satz wird in zwei Teile geteilt
|
|
desc_output = ""; // der auszugebene Satz wird geloescht, damit er mit den beiden Haelften wieder befuellt werden kann
|
|
desc_length = desc_split.length;
|
|
for (var j = 0; j < desc_length; j++) {
|
|
desc_output += desc_split[j];
|
|
if (j < desc_length - 1) {
|
|
desc_output += desc_value; // der Wert wird zwischen beide Texthaelften geschrieben
|
|
}
|
|
}
|
|
}
|
|
document.getElementById("meta_description").value = desc_output;
|
|
}
|
|
|
|
function insert_keyword($keyword) {
|
|
|
|
try {
|
|
|
|
var $input = document.getElementById($inputbox).value;
|
|
if ($inputbox == "meta_keywords") {
|
|
if ($input != "") {
|
|
$input += ",";
|
|
}
|
|
}
|
|
|
|
$input += " " + $keyword;
|
|
document.getElementById($inputbox).value = $input;
|
|
change_metatags();
|
|
} catch (e) {
|
|
alert($meta_error);
|
|
}
|
|
}
|
|
|
|
function change_metatags() {
|
|
if ($inputbox == "meta_keywords") {
|
|
$keywords = document.getElementById($inputbox).value;
|
|
get_keywords();
|
|
} else {
|
|
$description = document.getElementById($inputbox).value;
|
|
get_description();
|
|
}
|
|
switchstart();
|
|
}
|
|
|
|
function get_inputbox($input) {
|
|
|
|
if ($input == "meta_keywords") {
|
|
document.getElementById($input).value = $keywords;
|
|
} else {
|
|
document.getElementById($input).value = $description;
|
|
}
|
|
$inputbox = $input;
|
|
}
|
|
|
|
function get_selected_option($selectfield) {
|
|
var $buffer;
|
|
for (i = 0; i < document.getElementById($selectfield).length; i++) {
|
|
if (document.getElementById($selectfield).options[i].value == document.getElementById($selectfield).value) {
|
|
$buffer = document.getElementById($selectfield).options[i].text;
|
|
break;
|
|
}
|
|
}
|
|
return $buffer;
|
|
}
|