myty - Handbuch für Redakteure und Administratoren

Aktuelle Info zu Sicherheitsrisiken: In den aktuellen Versionen ab 4.1. sind keine Sicherheitsprobleme bekannt.  

Content / Editierfunktionen

modul: content
Release Info
Version: 4.0
SELECT SQL_CALC_FOUND_ROWS modulesfaq_questions.*, modulesfaq_answers.Version,`modulesfaq_questions`.`id`,`modulesfaq_questions`.`status` FROM `modulesfaq_questions` LEFT JOIN modulesfaq_answers ON modulesfaq_questions.id=modulesfaq_answers.modulesfaq_questions_id AND modulesfaq_answers.id=566 WHERE 1 AND modulesfaq_questions.id=389 AND `modulesfaq_questions`.`language` = 'de' AND `modulesfaq_questions`.status = 'enabled' LIMIT 0,1

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>
  
Autor: Conrad Gerlach
letzte Änderung: 07.09.2011
Kommentare 0
Fragen von Nutzern 0
ähnliche Themen 0

Ähnliche Beiträge

Es sind keine Beiträge verfügbar.

Empfohlene Beiträge

Es sind keine Beiträge verfügbar.

Kommentieren

 

Stellen Sie eine Frage

 

offene Fragen

Zu diesem Beitrag existieren keine offenen Fragen.

SELECT modulesfaq_questions.*, (SELECT modulesfaq_answers.id FROM modulesfaq_answers WHERE modulesfaq_answers.status='enabled' AND modulesfaq_answers.modulesfaq_questions_id = modulesfaq_questions.id ORDER BY modulesfaq_answers.Version DESC Limit 1) AS answer, (SELECT modulesfaq_answers.id FROM modulesfaq_answers WHERE modulesfaq_answers.modulesfaq_questions_id = modulesfaq_questions.id ORDER BY modulesfaq_answers.Version DESC Limit 1) AS answerCount, (SELECT COUNT(*) FROM modulesfaq_questions AS MQ WHERE MQ.Modul = modulesfaq_questions.Modul GROUP BY MQ.Modul) AS questionsByModul FROM modulesfaq_questions WHERE 1 AND modulesfaq_questions.language = 'de' AND modulesfaq_questions.status = 'enabled' AND modulesfaq_questions.Modul = 'content' ORDER BY modulesfaq_questions.Modul, modulesfaq_questions.pos, modulesfaq_questions.Frage

Alle Beiträge zum Thema

Auf Facebook teilen