edit_mode & Base::MODE_EDIT) { // Link der im Editor für links auf diese Seite gesetzt werden soll $site_number = Group::getSiteNumber (); $_SESSION['cms']['group'][$site_number]['link']['url'] = $this->url; $_SESSION['cms']['group'][$site_number]['link']['popup'] = isset ($values['popup']) ? $values['popup'] : ""; if (isset ($values['id']) && self::$firstCall) { $_SESSION['cms']['group'][$site_number]['link']['frameurl'] = isset ($values['frameurl']) ? $values['frameurl'] : ""; $_SESSION['cms']['group'][$site_number]['link']['target'] = isset ($values['target']) ? $values['target'] : ""; $_SESSION['cms']['group'][$site_number]['id'] = isset ($values['id']) ? $values['id'] : 0; } } $_SESSION['cms']['style'] = isset ($values['style']) ? ($values['style']."/") : ""; $_SESSION['cms']['referer'] = ($isset_parent_id && isset ($_SESSION['cms']['referer'])) ? $_SESSION['cms']['referer'] : $this->url; $_SESSION['cms']['default_lc'] = isset ($values['default_lc']) ? preg_replace ("/[^a-zA-Z]/s", "", $values['default_lc']) : (isset ($_SESSION['cms']['default_lc']) ? $_SESSION['cms']['default_lc'] : "en"); $_SESSION['cms']['lc'] = isset ($values['lc']) ? preg_replace ("/[^a-zA-Z]/s", "", $values['lc']) : (isset ($_SESSION['cms']['lc']) ? $_SESSION['cms']['lc'] : $_SESSION['cms']['default_lc']); $this->style = $_SESSION['cms']['style']; Base::session_close (); if (empty ($values['id'])) { $this->createTop (); } if (isset ($values['id']) && self::$firstCall) { self::$firstCall = false; echo ""; function script ($content) { return ""; } ob_start ("script"); } } } /** * Liefert einen Javascript Block der im header Bereich der Websiten eingesetzt werden muss * * \return Javascript Block als String */ public static function head () { Base::session_init (); $cmsPath = Setting::get ("config", "cmsPath"); $cmsPathAbs = Setting::get ("config", "documentRoot").$cmsPath; $text = ""; if (self::$firstCall) { $text .= "\n"; if (User::get ("id")) { $text .= "\n"; $text .= "\n"; } } if (User::get ("id")) { $text .= "\n"; } $text .= "\n"; return $text; } /** * Liefert ein Array mit Codeschnipseln die vor und hinter Gruppen eingefügt werden können um die Darstellung der Hervorhebung beim Rollover im Kontextmenü zu optimieren * * \return Array mit den Feldern before und after */ public function mark () { return (Group::getEditMode () & Base::MODE_EDIT) ? Array ('before' => "", 'after' => "") : Array ('before' => "", 'after' => ""); } public static function target ($name) { return ""; } /** * Gibt einen Editierdot zurück. * Wird der Name weckgelassen wird ein Listen Dot angezeigt. * * \param names Name des Elementes zu dem der Dot angezeigt werden soll oder ein Array mit Namen von Elementen. * \param attributes Assoziatives Array mit Attributen die für das Element gesetzt werden sollen * * \return String zum anzeigen eines Editier Dots */ public function edit ($names="", $attributes=NULL) { $this->storeAttributes ($names, $attributes); return $this->getEditDot ($names); } /** * Liefert den Wert eines Elementes. * * \param name Name des Elementes dessen Wert abgefragt wird * \param attributes Assoziatives Array mit Attributen die für das Element gesetzt werden sollen * * \return Der Wert des Elementes */ public function value ($names, $attributes=NULL) { $name = $this->getName ($names); if ($name) { $this->storeAttributes ($names, $attributes); $attributes['showName'] = Setting::get ("group/{$this->name}/{$this->style}$name", "showName"); $value = $this->element ($name)->getValue (empty ($attributes['showName']) && empty ($attributes['default']), true); $value = ($value || empty ($attributes['showName'])) ? $value : I18n::tr ("dot", $name); $value = ($value || empty ($attributes['default'])) ? $value : $attributes['default']; return $value; } return ""; } /** * Gibt den Text eines Elementes und den dazugehörigen Editierdot (zum Editieren im html-Modus) zurück. * Der Text ist von span-Tags umschlossen, damit er wehrend der Eingabe aktualisiert werden kann. * * \param names Name des Elementes das angezeigt werden soll oder ein Array mit Namen von Elementen (hierbei wird das erste Element angezeigt jedoch werden alle Editiert). * \param attributes Assoziatives Array mit Attributen die für das Element gesetzt werden sollen * * \return Wert des Elementes, von span-Tags umschlossen, und der dazugehörige Editierdot */ public function html ($names, $attributes=NULL) { return $this->text ($names, is_array ($attributes) ? array_merge (array ('type' => "html"), $attributes) : array ('type' => "html")); } /** * Gibt den Text eines Elementes und den dazugehörigen Editierdot zurück. * Der Text ist von span-Tags umschlossen, damit er wehrend der Eingabe aktualisiert werden kann. * * \param names Name des Elementes das angezeigt werden soll oder ein Array mit Namen von Elementen (hierbei wird das erste Element angezeigt jedoch werden alle Editiert). * \param attributes Assoziatives Array mit Attributen die für das Element gesetzt werden sollen \n * attributes['showName'] zeitgt an, das der Name des Elementes zurckgegeben werden soll, wenn kein Wert gesetzt ist * * \return Wert des Elementes, von span-Tags umschlossen, und der dazugehörige Editierdot */ public function text ($names, $attributes=NULL) { $name = $this->getName ($names); if ($name) { $this->storeAttributes ($names, $attributes, "text"); $attributes['showName'] = Setting::get ("group/{$this->name}/{$this->style}$name", "showName"); $dot = $this->getEditDot ($names); $elementid = "cms_element_".$this->group_number."_".$name; $value = $this->element ($name)->getValue (empty ($attributes['showName']) && empty ($attributes['default']), true); $value = ($value || empty ($attributes['showName'])) ? $value : I18n::tr ("dot", $name); $value = ($value || empty ($attributes['default'])) ? $value : $attributes['default']; if (!$value && !isset ($attributes['default']) && Setting::get ("group/{$this->name}/{$this->style}$name", "type") == "html") { $value = Setting::get ("group/{$this->name}/{$this->style}$name", "tag_p") ? "

 

" : " "; } return (Group::getEditMode () & Base::MODE_EDIT) ? "$dot$value" : $value; } return ""; } /** * Gibt das eingegebene Datum (definierten Format) und den dazugehörigen Editierdot zurück. * Das Datum ist von span-Tags umschlossen, damit er wehrend der Eingabe aktualisiert werden kann. * * \param names Name des Elementes das angezeigt werden soll oder ein Array mit Namen von Elementen (hierbei wird das erste Element angezeigt jedoch werden alle Editiert). * \param attributes Assoziatives Array mit Attributen die für das Element gesetzt werden sollen * attributes['dateformat'] legt das Ausgabeformat fest, in dem das Datum angezeigt werden soll * * \return Wert des Elementes im definierten datumsformat, von span-Tags umschlossen, und der dazugehörige Editierdot */ public function date ($names, $attributes=NULL) { $name = $this->getName ($names); if ($name) { $this->storeAttributes ($names, $attributes, "date"); $dot = $this->getEditDot ($names); $elementid = "cms_element_".$this->group_number."_".$name; $value = $this->element ($name)->getValue (true); $dateformat = Setting::get ("group/{$this->name}/{$this->style}$name", "dateformat"); if ($dateformat && strtotime ($value)) { $datelocale = Setting::get ("group/{$this->name}/{$this->style}$name", "datelocale"); if ($datelocale) { setlocale (LC_TIME, $datelocale); } $value = utf8_encode (strftime ($dateformat, strtotime ($value))); } return (Group::getEditMode () & Base::MODE_EDIT) ? "$dot$value" : $value; } return ""; } /** * Gibt ein Element als Bild und den dazugehörigen Editierdot zurück. * * \param names Name des Elementes das angezeigt werden soll oder ein Array mit Namen von Elementen (hierbei wird das erste Element angezeigt jedoch werden alle Editiert). * \param attributes Assoziatives Array mit Attributen die für das Element gesetzt werden sollen * attributes['width'] und attributes['height'] legen die Abmessungen des Bildes fest * * \return Wert des Elementes im definiertem datumsformat, von span-Tags umschlossen, und der dazugehörige Editierdot */ public function image ($names, $attributes=NULL) { $name = $this->getName ($names); if ($name) { $this->storeAttributes ($names, $attributes, "image"); $dot = $this->getEditDot ($names); $elementid = "cms_element_".$this->group_number."_".$name; $src = $this->element ($name)->getValue (empty ($attributes['default'])); if ($src) { $src = $src . ((SID && strstr ($src, "?")) ? ("&".SID) : ""); } else { $src = isset ($attributes['default']) ? $attributes['default'] : Setting::get ('config', 'cmsPath')."/images/1x1.gif"; } $attributes = (is_array ($attributes)) ? $attributes : array (); $attributes['width'] = (isset ($attributes['width'])) ? $attributes['width'] : preg_replace ("/.*[&\?]width=(\d+).*|.*/", "\\1", $src); $attributes['height'] = (isset ($attributes['height'])) ? $attributes['height'] : preg_replace ("/.*[&\?]height=(\d+).*|.*/", "\\1", $src); $border = Setting::get ("group/{$this->name}/{$this->style}$name", "image_border"); $attributes['border'] = ($border!="") ? $border : ((isset ($attributes['border'])) ? $attributes['border'] : ""); $attrib = ""; foreach ($attributes as $key => $val) { $attrib .= " $key='$val'"; } if (preg_match ("/type=video\/mp4|\.mp4/", $src)) { $value = ""; } else if ($src) { $value = ""; } else { $value = ""; } return (Group::getEditMode () & Base::MODE_EDIT) ? "$dot$value" : $value; } return ""; } /** * Liefert eine ID für einen Tag dessen Attribut bei Änderungen aktualesiert werden soll * * \param name Name des Elementes * \param attribute Name des Attributes das bei Änderungen aktualesiert werden soll. Wird dieser Parameter weckgelassen, wird der Inhalt des Tags aktualisiert * * \return Der Wert des Elementes */ public function updateId ($name, $attribute="") { $name = $this->getName ($name); $attributes = array (); $attributes['update_id'] = true; $attributes['update_attribute'] = $attribute; foreach ($attributes as $key => $value) { Setting::initialise ("group/{$this->name}/{$this->style}$name", $key, $value, false); } return "cms_update_".$this->group_number."_".$name; } /** * Liefert einen html-Codeschnipseln der einen Editier Dot anzeigt. * Wird der Name weckgelassen wird ein Listen Dot angezeigt. * * \param names Name des Elementes zu dem der Dot angezeigt werden soll oder ein Array mit Namen von Elementen. * * \return String zum anzeigen eines Editier Dots */ private function getEditDot ($names) { $name = $this->getName ($names); if ($this->parent_id && ( // Wenn ein parent Eintrag existiert ($name && ($this->edit_mode & $this->edit_right & Base::MODE_EDIT) && (!isset($this->viewEditDot[$name]))) || // und wenn der Dot mit dem gegebenem Namen noch nicht angezeigt wird (!$name && $this->list && $this->list->parent && ($this->list->parent->edit_mode & $this->edit_right & Base::MODE_EDIT) && !isset(self::$viewEditModeDot["{$this->parent_id}_{$this->name}"])))) // oder wenn es ein EditMode-Dot ist (kein Name) und er noch nicht angezeigt wird { if (is_array ($names)) { foreach ($names as $key => $value) { $names[$key] = Element::trimmName (is_array ($value) ? $key : $value); } } // Speichern das dieser Dot bereits angezeigt wird, damit jeder Dot nur einmal angezeigt wird if ($name) { if (is_array ($names)) { foreach ($names as $row) { $this->viewEditDot[Element::trimmName ($row)] = true; } } else { $this->viewEditDot[$name] = true; } } else { Group::initEditMode ("{$this->parent_id}_{$this->name}", Base::MODE_VIEW | ($this->id ? 0 : Base::MODE_EDIT)); self::$viewEditModeDot["{$this->parent_id}_{$this->name}"] = true; } if (is_array ($names)) { Setting::set ("group/{$this->name}/{$this->style}$name", "names", implode (",", $names), false); } else if (Setting::get ("group/{$this->name}/{$this->style}$name", "names")) { Setting::set ("group/{$this->name}/{$this->style}$name", "names", "", false); } $this->setSiteGroup ($name); $dotid = "cms_dot_".$this->group_number."_".$name; $site_number = Group::getSiteNumber (); return ""; } return ""; } private function getName ($names) { $name = is_array ($names) ? current ($names) : $names; $name = is_array ($name) ? key ($names) : $name; $name = is_string ($name) ? Element::trimmName ($name) : ""; return $name; } private function storeAttributes ($names, $attributes=NULL, $type="") { if (!$this->edit_mode) { return ""; } $result = array (); $names = is_array ($names) ? $names : array ($names); foreach ($names as $n => $a) { if ($attributes) { if (is_array ($a)) { $a = array_merge ($attributes, $a); } else { $n = $a; $a = $attributes; } $attributes = null; } if ($type) { if (is_array ($a)) { $a['type'] = isset ($a['type']) ? $a['type'] : $type; } else { $n = $a; $a = array ('type'=>$type); } $type = null; } $n = (is_string ($n)) ? Element::trimmName ($n) : ""; if ($n && is_array ($a)) { switch (isset ($a['type']) ? $a['type'] : "") { case "text": $a = array_merge (array ('symbol' => "text", 'left' => -15), $a); break; case "textarea": $a = array_merge (array ('symbol' => "textarea", 'left' => -15), $a); break; case "html": $a = array_merge (array ('symbol' => "html", 'left' => -15, 'link_this' => 1, 'link_child' => 1, 'tag_p' => 1, 'tag_br' => 1, 'tag_blockquote' => 1, 'tag_ul' => 1, 'tag_table' => 1, 'tag_strong' => 1, 'tag_em' => 1, 'tag_a' => 1, 'tag_h1' => 1, 'tag_h2' => 1, 'tag_img' => 1), $a); break; case "light": case "htmllight": case "html light": $a = array_merge (array ('symbol' => "html", 'left' => -15, 'link_this' => 1, 'link_child' => 1, 'tag_p' => false, 'tag_br' => false, 'tag_blockquote' => false, 'tag_ul' => false, 'tag_table' => false, 'tag_strong' => 1, 'tag_em' => 1, 'tag_a' => 1, 'tag_h1' => false, 'tag_h2' => false, 'tag_img' => false), $a, array ('type' => "html")); break; case "date": $a = array_merge (array ('symbol' => "date", 'left' => -15, 'datelocale' => "de_DE", 'dateformat' => "%e. %b %Y", 'set_default_date' => 1), $a); break; case "image": $a = array_merge (array ('symbol' => "image", 'left' => -15), $a); foreach (array ('width', 'height', 'border', 'align') as $key) { if (isset ($a[$key])) { $a["image_$key"] = $a[$key]; unset ($a[$key]); } } break; } if (!empty ($a['showName']) && empty ($a['defaultvalue'])) { $a['defaultvalue'] = $n; } foreach ($a as $key => $value) { Setting::initialise ("group/{$this->name}/{$this->style}$n", $key, $value, false); } } } } } ?>