Aktuelle Info zu Sicherheitsrisiken: In den aktuellen Versionen ab 4.1. sind keine Sicherheitsprobleme bekannt.
Content / Editierfunktionen
Version: 4.0
Setup
Hier werden die möglichen Einstellungen im Setup des Content-Moduls erklärt. Das Setup erreich man über den Pfad „Einstellungen“ → „Projekt Verwaltung“ → „Modul-Einstellungen“ → „content“
Verweise
Standardmäßig werden 5 Verweistypen ausgeliefert, welche beim Einfügen eines Links oder eines Bildes ausgewählt werden können:
-
Interner Verweis - Verknüpfung auf einer Seite in der Seiten-Navigation
-
Datei - Eine Datei aus dem Dateimanager zum Download anbieten
-
Externe Adresse - Link auf eine andere Adresse / Seite im WWW
-
Anker - Verweis auf eine Sprungmarke in einer internen Seite
-
E-Mail Adresse - Verweis ruft beim klicken das E-Mail Programm auf, um eine Nachricht an die eingegebene Adresse zu schicken
zusätzliche Verweistypen
Es ist ab myty 4.1.2 möglich, die standardmäßig ausgelieferten Verweistypen um Eigene zu erweitern. Dabei ist jeder Verweistyp eine PHP-Klasse, welche von der Klasse „tyLinkTypePlugin“ erbt.
Um einen neuen Verweistyp zu definieren gibt man im Setup einerseits die Datei an, welche die abgeleitete Klasse enthält und den Klassennamen, um diese Klasse zu laden.
Die Deklaration sieht folgendermaßen aus:
class linkType_custom extends tyLinkTypePlugin { // Typ-Identifikator des Plugins protected $type = 'custom'; // Bezeichnung des Verweistyps protected $caption = 'Benutzerdefinierter Link'; // CSS-Klassenname für den erzeugten <a/> Tag (optional) protected $classStr = 'custom-link-class'; /* Implementierung der benötigten Methoden */ }
Eine Auflistung der verfügbaren Methoden finden Sie hier: classty_link_type_plugin.html
Beispiel für einen zusätzlichen Verweistyp
Das folgende Beispiel zeigt, wie man einen Link auf eine interne Seite auswählen kann und verändert die Ausgabe des Links so, dass in den Vorlagen über das Attribut rel=„lightbox“ ein Javascript-Plugin angebunden werden kann, welches die Seite dann in einem Popin öffnet.
<?php include_once($GLOBALS['mytyInstallPath'].'/classes/widget/widgetsmartnavigation.class.php'); class linkType_popin extends tyLinkTypePlugin { protected $type = 'popin'; protected $caption = 'Im Popin öffnen'; protected $classStr = 'myty-popin-link'; private $widget = null; public function __construct(&$options = null) { $this->widget = new WidgetSmartNavigation('popin_link'); $this->widget->setContainerAttributes(array('class'=>'mytyLinkWidget')); $this->widget->setSettings('{ onclick : function(item) { selectRadioByType(item, 'popin'); } }'); parent::__construct($options); } /** * returns additional contents for head tag like javascript tags or meta informations * @return string */ public function getHeadContent() { ob_start(); ?> <script type="text/javascript"> var checkPopinLink = function(anchorNode, href) { var linkType = null; if( anchorNode.className.indexOf('<?php echo $this->classStr;?>') >= 0 || href.indexOf('#popin') > 0 ) { var topicGetter = "topic="; if (href.lastIndexOf(topicGetter) < 0) { linkType = 'ajax'; ajaxCheck('action=getTopicByURL&url='+encodeURIComponent(href), function(response) { linkType = 'web'; var findTopic = false; if (response != '') { linkType = '<?php echo $this->type;?>'; var widgetInstance = $ty('#<?php echo $this->widget->getContainerId();?>').getInstance('nav:smartnav'); widgetInstance.selectItemByTopic(response); } else { alert('<?php echo ty_("Das Topic der internen Seite wurde nicht gefunden. Bitte wählen Sie ein neues Verweisziel aus.")?>'); if(href.indexOf("http://<?php echo $_SERVER['SERVER_NAME'] ?>") != 0) { href = "http://<?php echo $_SERVER['SERVER_NAME'] ?>" + href; } } if (linkType == "web") document.getElementById("extern").value = href; selectRadioByType(null, linkType); }); } else { // Topic über GetterVars var startPos = href.lastIndexOf(topicGetter) + topicGetter.length; var topic = href.slice(startPos); var indexAnd = topic.indexOf("&"); // weitere Getter abschneiden if (indexAnd != -1) var topic = topic.slice(0, indexAnd); var indexAnd = topic.indexOf("#"); // weitere Getter abschneiden if (indexAnd != -1) var topic = topic.slice(0, indexAnd); linkType = 'web'; if (topic.length > 0) { linkType = '<?php echo $this->type;?>'; var container = $ty('#<?php echo $this->widget->getContainerId();?>'); var widgetInstance = container.getInstance('nav:smartnav'); widgetInstance.selectItemByTopic(topic); } else { alert('<?php echo ty_("Das Topic der internen Seite wurde nicht gefunden. Bitte wählen Sie ein neues Verweisziel aus.")?>'); if(href.indexOf("http://<? echo $_SERVER['SERVER_NAME'] ?>") != 0) { href = "http://<? echo $_SERVER['SERVER_NAME'] ?>" + href; } } } } return linkType; } var buildAnchorNode = function(anchorNode) { var anchorNode = $ty(anchorNode); anchorNode.attr('rel', 'lightbox'); } $ty(function(){ <?php echo $this->widget->getInitializationCode();?> }); </script> <?php return ob_get_clean(); } /** * returns the name of a function that will be called to scan the link node for current link type * this function must be callable in global context * * @return string */ public function linkCheckCall() { return 'checkPopinLink'; } /** * returns code of javascript to check form values before submitting them * * @return string javascript w/o script tags */ public function formCheckCall() { ob_start(); ?> var linkTypeCheckbox = null; var form = {}; if( document.linkSubmit ) form = document.linkSubmit; if( document.imgSubmit ) form = document.imgSubmit; if( form.link ) { for( var i=0; i < form.link.length; i++ ) { if( form.link[i].value === 'popin' ) { linkTypeCheckbox = form.link[i]; break; } } } if( linkTypeCheckbox !== null && linkTypeCheckbox.checked == true && form.popin_link.value == ''){ alert('<?php echo ty_("Fehler: Sie haben keine Seite ausgewählt.")?>'); return false; } <?php return ob_get_clean(); } /** * returns the value for the href attribute * * @param array $request values sent by form * @return string */ public function getHref( &$request ) { return $GLOBALS['mytyBasePath'].'/rewrite.php?topic='.$request['popin_link'].'#popin-container'; } /** * returns the name of a previously declared javascript function to modify the properties of the anchor node * this function must be callable in global context * * @return string javascript function */ public function getLinkBuildCall() { return 'buildAnchorNode'; } /** * output the code * * @return string */ public function __toString() { return $this->widget->getWidget(); } }
Veröffentlichungs-Modus (publishMode)
Der Veröffentlichungsmodus ist eine Anzeigeform von Inhaltsseiten, in der man visualisiert bekommt, welche Inhalte der Seite noch unveröffentlicht sind. Darin kann man sofort die betreffenden Inhalte veröffentlichen, bearbeiten oder an den jeweiligen Redaktuer zur Überarbeitung zurückgeben. Alle bereits veröffentlichten Inhalte werden hierbei inaktiv dargestellt und sind nicht bearbeitbar.
Benutzung
Um in den publishMode zu wechseln benutzt man die Modus-Auswahl in der Werkzeugleiste. Möchte man den Veröffentlichungsmodus verlassen wechselt man einfach wieder zurück in den Vorschau- bzw. Editiermodus.
Reguläre Ausdrücke
Ab der myty-Version 3.5 ist es möglich reguläre Ausdrücke für bearbeitbare Textfelder festzulegen.
Syntax
<ty:content id=„id“ regexp_type=„phone“>Telefonnummer</ty:content>
Im oberen Beispiel wird ein Content-Feld erzeugt mit der Bedingung, dass der Inhalt eine Telefonnummer ist. Dabei muss der Typ „phone“ im Backend in Einstellungen→Projektverwaltung→Typ-Richtlinien angelegt sein.
optionale Content-Tags
Durch die Möglichkeit reguläre Ausdrücke für Content-Felder anzulegen gibt es ab Version 3.5 noch weitere Tags für das Modul „Content“.
noError: Wenn auf dieser Seite alle Content-Felder in Ordnung sind.
errorText: Fehlertext, der in Typ-Richtlinien angegeben ist.
Beispiel
Fehlerausgabe und „Speichern“-Button nicht anzeigen für obiges Beispiel
<ty:content> <ty-content:errorText id="id"/> <ty-content:noError><button type="submit">Speichern</button></ty-content:noError> </ty:content>
letzte Änderung: 07.09.2011
Stellen Sie eine Frage
offene Fragen
Zu diesem Beitrag existieren keine offenen Fragen.

Kommentieren