openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 43ce763c0c2647a84aa378dad4ead30fc9ec7375
parent 0852836d45a0a6f894b061cd3b8821e6f3d5c737
Author: dankert <devnull@localhost>
Date:   Thu,  3 May 2007 23:19:37 +0200

Inhalte mit dem Inhalt anderer Seiten verkn?pfen.

Diffstat:
actionClasses/PageelementAction.class.php | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
actionClasses/PageelementAction.ini.php | 8++++++--
language/de.ini.php | 60+++++++++++++++++++++++++++++++++++++++++++++++++++---------
objectClasses/Value.class.php | 30++++++++++++++++++++++++++++--
themes/default/templates/pageelement/link.tpl.src.php | 33+++++++++++++++++++++++++++++++++
5 files changed, 227 insertions(+), 18 deletions(-)

diff --git a/actionClasses/PageelementAction.class.php b/actionClasses/PageelementAction.class.php @@ -83,6 +83,23 @@ class PageelementAction extends Action function show() { + $language = Session::getProjectLanguage(); + $this->value->languageid = $language->languageid; + $this->value->objectid = $this->page->objectid; + $this->value->pageid = $this->page->pageid; + $this->value->element = &$this->element; + $this->value->element->load(); + $this->value->publish = false; + $this->value->load(); + + $this->setTemplateVar('name' ,$this->value->element->name ); + $this->setTemplateVar('desc' ,$this->value->element->desc ); + $this->setTemplateVar('elementid',$this->value->element->elementid); + $this->setTemplateVar('type' ,$this->value->element->type ); + + + + $this->value->generate(); $this->setTemplateVar('value',$this->value->value); } @@ -591,6 +608,69 @@ class PageelementAction extends Action + function link() + { + $language = Session::getProjectLanguage(); + $this->value->languageid = $language->languageid; + $this->value->objectid = $this->page->objectid; + $this->value->pageid = $this->page->pageid; + $this->value->element = &$this->element; + $this->value->element->load(); + $this->value->publish = false; + $this->value->load(); + + // Ermitteln, welche Objekttypen verlinkt werden dürfen. + if ( empty($this->value->element->subtype) ) + $types = array('page','file','link'); // Fallback: Alle erlauben :) + else + $types = explode(',',$this->value->element->subtype ); + +// Html::debug($this->value->element,'Element'); +// Html::debug($types,'Typen1'); + $objects = array(); + + $t = new Template( $this->page->templateid ); + + foreach( $t->getDependentObjectIds() as $id ) + { + $o = new Object( $id ); + $o->load(); + +// if ( in_array( $o->getType(),$types )) +// { + $f = new Folder( $o->parentid ); +// $f->load(); + + $objects[ $id ] = lang( 'GLOBAL_'.$o->getType() ).': '; + $objects[ $id ] .= implode( FILE_SEP,$f->parentObjectNames(false,true) ); + $objects[ $id ] .= FILE_SEP.$o->name; +// } + } + + asort( $objects ); // Sortieren + + $this->setTemplateVar('objects' ,$objects); +// Html::debug($this->value,'Value'); + $this->setTemplateVar('linkobjectid',$this->value->linkToObjectId); + + if ( $this->getSessionVar('pageaction') != '' ) + $this->setTemplateVar('old_pageaction',$this->getSessionVar('pageaction')); + else $this->setTemplateVar('old_pageaction','show' ); + + $this->value->page = new Page( $this->page->objectid ); + $this->value->page->languageid = $this->value->languageid; + $this->value->page->load(); + + $this->setTemplateVar( 'release',$this->value->page->hasRight(ACL_RELEASE) ); + $this->setTemplateVar( 'publish',$this->value->page->hasRight(ACL_PUBLISH) ); + + $this->setTemplateVar( 'objectid',$this->value->page->objectid ); + + $this->forward('pageelement_edit_'.$this->value->element->type); + } + + + function editselect() { $this->setTemplateVar( 'items',$this->value->element->getSelectItems() ); @@ -1123,13 +1203,25 @@ class PageelementAction extends Action $value->publish = false; $value->load(); - $value->text = $this->getRequestVar('text'); + if ( $this->hasRequestVar('linkobjectid') ) + $value->linkToObjectId = $this->getRequestVar('linkobjectid'); + else + $value->text = $this->getRequestVar('text'); $this->afterSave($value); } + /** + * Nach dem Speichern weitere Dinge ausfuehren.<br> + * - Inhalt freigeben<br> + * - Seite veroeffentlichen<br> + * - Inhalt fuer andere Sprachen speichern<br> + * - Hinweis ueber erfolgtes Speichern ausgeben<br> + * <br> + * Nicht zu verwechseln mit <i>Aftershave</i> :) + */ function afterSave( $value ) { $value->page = new Page( $value->objectid ); @@ -1196,7 +1288,11 @@ class PageelementAction extends Action $value->publish = false; $value->load(); - $value->text = $this->getRequestVar('text'); + + if ( $this->hasRequestVar('linkobjectid') ) + $value->linkToObjectId = $this->getRequestVar('linkobjectid'); + else + $value->text = $this->getRequestVar('text'); // Vorschau anzeigen if ( $value->element->type=='longtext' && ($this->hasRequestVar('preview')||$this->hasRequestVar('addmarkup')) ) @@ -1298,8 +1394,10 @@ class PageelementAction extends Action $value->publish = false; $value->load(); - // Wenn ein ANSI-Datum eingegeben wurde, dann dieses verwenden - if ( $this->getRequestVar('ansidate') != $this->getRequestVar('ansidate_orig') ) + if ( $this->hasRequestVar('linkobjectid') ) + $value->linkToObjectId = $this->getRequestVar('linkobjectid'); + elseif ( $this->getRequestVar('ansidate') != $this->getRequestVar('ansidate_orig') ) + // Wenn ein ANSI-Datum eingegeben wurde, dann dieses verwenden $value->date = strtotime($this->getRequestVar('ansidate') ); else // Sonst die Zeitwerte einzeln zu einem Datum zusammensetzen @@ -1425,7 +1523,10 @@ class PageelementAction extends Action $value->publish = false; $value->load(); - $value->number = $this->getRequestVar('number') * pow(10,$value->element->decimals); + if ( $this->hasRequestVar('linkobjectid') ) + $value->linkToObjectId = $this->getRequestVar('linkobjectid'); + else + $value->number = $this->getRequestVar('number') * pow(10,$value->element->decimals); $this->afterSave($value); } @@ -1503,6 +1604,9 @@ class PageelementAction extends Action case 'archive': return true; + case 'link': + return in_array($type,array('date','text','longtext','number')); + case 'advanced': return in_array($type,array('date','longtext','number')); diff --git a/actionClasses/PageelementAction.ini.php b/actionClasses/PageelementAction.ini.php @@ -12,6 +12,10 @@ menu=edit [import] menu=edit +[link] +menu=edit +target=save + [export] menu=edit @@ -36,4 +40,4 @@ target=save goto=show [menu] -edit=show,edit,advanced,import,export,archive- \ No newline at end of file +edit=show,edit,advanced,link,import,export,archive+ \ No newline at end of file diff --git a/language/de.ini.php b/language/de.ini.php @@ -109,6 +109,9 @@ ELEMENT_TYPE =Element-Typ EL_CODE = "PHP Code" EL_CODE_DESC = "Das <strong>PHP Code</strong>-Element enthält PHP-Code, welcher während der Generierung vom System ausgeführt wird. Mit diesem Element kann eine Seite sehr dynamisch aufgebaut werden, bleibt nach der Generierung aber statisch.<br/><em>Hinweis: </em>Dieser Elementtyp verlangt Kenntnisse in der Programmierung von PHP-Code!" EL_COPY =Kopie +EL_COPY_DESC = "Einen Wert aus einem Element einer verlinkten Seite kopieren" +EL_LINKINFO = "Link-Info" +EL_LINKINFO_DESC = "Eine Eigenschaften eines verknüpften Objektes als Wert verwenden" EL_DATE = Datum EL_DATE_DESC = "Dieses Element enthält ein Datum" EL_DYNAMIC = "Dynamisch" @@ -151,11 +154,11 @@ EL_INFO_PAGE_NAME = "Seite: Name" EL_INFO_PROJECT_ID = "Projekt: ID" EL_INFO_PROJECT_NAME = "Projekt: Name" EL_INFO_URL = "URL zum Einloggen" -EL_LINK = "Link (Anchor)" +EL_LINK = "Link (Verknüpfung)" EL_LINK_DESC = "Ein Link ist eine Verknüpfung mit einer Seite oder einer Datei" EL_LIST = "Liste" EL_LIST_DESC = "Das Listenelement enthält in sich eine oder mehrere Seiten. Mit diesem Element können Seiten aus Bausteinen (welche nichts anderes als weitere Seiten sind) aufgebaut werden" -EL_LONGTEXT = "Text Absatz" +EL_LONGTEXT = "Text-Absatz" EL_LONGTEXT_DESC = "Ein Text Absatz ist ein langer, mehrzeiliger Text" EL_NUMBER = "Zahl" EL_NUMBER_DESC = "Das Element Zahl enthält numerische Inhalte" @@ -181,22 +184,29 @@ EL_PROP_DYNAMIC_PARAMETERS = "Parameter" EL_PROP_DYNAMIC_PARAMETERS_DESC = "Fü das dynamische Element können Parameter gesetzt werden. Geben Sie diese hier an.<br/>Format: 1 Parameter pro Zeile, Name/Wert mit Doppelpunkt (:) getrennt.<br/>Beispiel:<br/><tt>a:1<br/>b:2</tt>" EL_PROP_DYN_PARAM = "Parameter" EL_PROP_DYN_PARAM_DESC = "keine Beschreibung" -EL_PROP_HTML = "HTML erlaubt" +EL_PROP_FORMAT = "Formatierung" +EL_PROP_RAW = "Einfacher Text" +EL_PROP_HTML = "HTML mit erweitertem Editor" +EL_PROP_WIKIHTML = "Wiki-ähnliche Schnellformatierung, HTML erlaubt" +EL_PROP_WIKI = "Wiki-ähnliche Schnellformatierung, HTML nicht erlaubt" +EL_LINK_NONE = "Alle" +EL_LINK_PAGE = "Link auf Seiten" +EL_LINK_LINK = "Link auf Verknüpfungen" +EL_LINK_FILE = "Link auf Dateien" +EL_PROP_WIKI_DESC = "Mit der Wiki-Schnellformatierung können Texte im Bearbeitungsfenster formatiert werden, z.B. Fett/Kursivschreibung, Verweise..." EL_PROP_HTML_DESC = "Dem Redakteur kann HTML-Code in diesem Element schreiben. Ist dieser Schalter nicht gesetzt, werden alle HTML-Tags maskiert." EL_PROP_SELECT_ITEMS = "Auswahlliste Vorbelegung" EL_PROP_SELECT_ITEMS_DESC = "Hier werden die Werte festgelegt, aus denen der Redakteur auswählen kann.</br>1 Wert pro Zeile.</br>Anzeige und Wert können mit dem Doppelpunkt (:) getrennt werden, Beispiel: DEU,Deutschland. Wählt der Redakteur jetzt Deutschland aus, wird nur DEU als Wert gespeichert." EL_PROP_THOUSAND_SEP = "Tausender-Stelle" EL_PROP_THOUSAND_SEP_DESC = "Darstellung der Tausender-Stelle als Zeichenkette, z.B. '.', oder leer" -EL_PROP_WIKI = "<em>Wiki</em> Schnellformatierung" -EL_PROP_WIKI_DESC = "Mit der Wiki-Schnellformatierung können Texte im Bearbeitungsfenster formatiert werden, z.B. Fett/Kursivschreibung, Verweise..." EL_PROP_WITH_ICON = "mit Editier-Ikon" EL_PROP_WITH_ICON_DESC = "Im Bearbeitungsmodus einer Seite erscheint vor diesem Element ein anklickbares Symbol" EL_PROP_WRITABLE = "Editierbar" EL_PROP_WRITABLE_DESC = "Nur wenn dieser Schalter gesetzt ist, kann der Elementinhalt über den Baum oder über den Bearbeitungsmodus einer Seite geändert werden" EL_SELECT = "Auswahlliste" EL_SELECT_DESC = "Der Inhalt wird vom Redakteur aus einer vorzugebenden Liste ausgewählt" -EL_TEXT = "Textfeld" -EL_TEXT_DESC = "Das Textfeld dient fär einzeilige Texte bis max. 255 Zeichen" +EL_TEXT = "Text (einfach)" +EL_TEXT_DESC = "Das einfache Textfeld dient für einzeilige Texte bis max. 255 Zeichen" ERROR = "Technischer Fehler" ERROR_ACCESS_DENIED = "Zugriff verweigert" ERROR_ACCESS_DENIED_DESC = "Sie haben keine ausreichenden Rechte, um auf das ausgewählte Objekt zuzugreifen" @@ -244,7 +254,7 @@ FOLDER_ORDER = "Reihenfolge" FOLDER_ORDERBYLASTCHANGE = "Einträge nach dem Datum der letzten änderung aufsteigend sortieren" FOLDER_ORDERBYNAME = "Einträge nach dem Namen aufsteigend sortieren" FOLDER_ORDERBYTYPE = "Einträge nach dem Typ sortieren" -FOLDER_ROOT = "Hauptverzeichnis" +FOLDER_ROOT = "Inhalt" FOLDER_ROOT_DESC = "Das Hauptverzeichnis des Projektes, es enthält die Projektstruktur mit Unterordnern, allen Seiten und Dateien" FOLDER_SELECT_COPY =Kopieren nach ... FOLDER_SELECT_COPY_HELP =Ausgewählte Objekte in ein anderes Verzeichnis kopieren @@ -589,7 +599,7 @@ MENU_PAGE_RIGHTS =Anzeigen MENU_PAGE_RIGHTS_DESC =Rechte dieser Seite ansehen MENU_PAGE_SHOWPROP =Anzeigen MENU_PAGE_SHOWPROP_DESC =Eigenschaften der Seite anzeigen -MENU_PAGE_SRC =Quelcode +MENU_PAGE_SRC = "Quellcode" MENU_PROFILE_EDIT =Bearbeiten MENU_PROFILE_EDIT_DESC =Ihre Benutzereinstellungen bearbeiten MENU_PROFILE_MAIL = "E-Mail" @@ -597,6 +607,7 @@ MENU_PROFILE_MAIL_DESC = "E-Mail ändern" MENU_PROFILE_PWCHANGE =Kennwort MENU_PROFILE_PWCHANGE_DESC =Ihr Kennwort änderns MENU_PROJECT_ADD =Neu +MENU_PROJECT_EXPORT = Export MENU_PROJECT_ADD_DESC =Neues Projekt anlegen MENU_PROJECT_EDIT =Bearbeiten MENU_PROJECT_EDIT_DESC =Die Projekteinstellungen bearbeiten @@ -727,6 +738,8 @@ PAGE_EDITOR_ADD_TABLE ="Tabelle einfügen" PAGE_ELEMENTS_DESC = "Wählen Sie ein Element aus, um es zu bearbeiten." PAGE_ELEMENT_NAME = "Name des Elementes" PAGE_ELEMENT_VALUE = "Inhalt" +PAGE_TEMPLATE_OLD = "Bisherige Vorlage" +PAGE_TEMPLATE_NEW = "Neue Vorlage" PAGE_LONGTEXT_WIKI_DESC = "<ul><li>*<strong>wichtig</strong>*</li><li>_<em>kursiv</em>_</li><li> =<tt>feste Zeichenbreite</tt> =</li><li>Link->123 <em>oder</em> Link->http://...</li></ul>" PAGE_PAGEELEMENT = "Seitenelement" PAGE_PAGEELEMENTS = "Seitenelemente" @@ -816,3 +829,31 @@ USER_TEL = "Telefon" USER_USERNAME = Benutzername USER_USERNAME_DESC = "Mit diesem Namen meldet sich der Benutzer am System an" USER_YOURPROFILE = "Persönliche Einstellungen" +MENU_TITLE_PAGEELEMENT_EDIT="Seitenelement bearbeiten" +HTTP_REALM="Bitte anmelden" + + + +EL_LINKINFO_CREATE_USER_DESC = "Erstellungsautor: Beschreibung" +EL_LINKINFO_CREATE_USER_FULLNAME = "Erstellungsautor: Voller Name" +EL_LINKINFO_CREATE_USER_MAIL = "Erstellungsautor: E-Mail" +EL_LINKINFO_CREATE_USER_USERNAME = "Erstellungsautor: Benutzername" +EL_LINKINFO_CREATE_USER_TEL = "Erstellungsautor: Telefonnummer" +EL_LINKINFO_LASTCH_USER_DESC = "Letzter Benutzer: Beschreibung" +EL_LINKINFO_LASTCH_USER_FULLNAME = "Letzter Benutzer: Voller Name" +EL_LINKINFO_LASTCH_USER_MAIL = "Letzter Benutzer: E-Mail" +EL_LINKINFO_LASTCH_USER_TEL = "Letzter Benutzer: Telefonnummer" +EL_LINKINFO_LASTCH_USER_USERNAME = "Letzter Benutzer: Benutzername" +EL_LINKINFO_PAGE_NAME = "Seite: Name" +EL_LINKINFO_PAGE_DESC = "Seite: Beschreibung" +EL_LINKINFO_PAGE_EXTENSION = "Seite: Dateiname-Erweiterung" +EL_LINKINFO_PAGE_FILENAME = "Seite: Dateiname (ohne Erweiterung)" +EL_LINKINFO_PAGE_FULLFILENAME = "Seite: Kompletter Dateiname mit Pfadangabe" +EL_LINKINFO_PAGE_ID = "Seite: ID" +EL_LINKINFO_WIDTH = "Breite" +EL_LINKINFO_HEIGHT = "Höhe" +EL_LINKINFO_MIME-TYPE = "Mime-Type" +MENU_TITLE_FOLDER_NEW="Neue Ordner, Seiten, Verknüpfungen anlegen" +MENU_PAGEELEMENT_LINK="Verknüpfen" +MENU_PAGEELEMENT_LINK_DESC="Den Inhalt aus einer anderen Seite verknüpfen" + + \ No newline at end of file diff --git a/objectClasses/Value.class.php b/objectClasses/Value.class.php @@ -44,6 +44,12 @@ class Value var $page; /** + * Kennzeichen, ob der Inhalt mit dem Inhalt einer anderern Seite verknüpft wird. + * @type Object + */ + var $isLink = false; + + /** * Objekt-ID, auf die verlinkt wird * @type Integer */ @@ -155,7 +161,8 @@ class Value ' AND pageid ={pageid}'. ' AND languageid={languageid}'. ' AND publish=1' ); - else $sql = new Sql( 'SELECT * FROM {t_value}'. + else + $sql = new Sql( 'SELECT * FROM {t_value}'. ' WHERE elementid ={elementid}'. ' AND pageid ={pageid}'. ' AND languageid={languageid}'. @@ -404,7 +411,8 @@ SQL /** - * Diese Methode erzeugt fuer alle Elementtypen den Inhalt. + * Hier findet die eigentliche Bereitstellung des Inhaltes statt, zu + * jedem Elementtyp wird ein Inhalt ermittelt. */ function generate() { @@ -416,6 +424,24 @@ SQL $inhalt = ''; // Logger::debug('Generating Element '.$this->element->name.', type='.$this->element->type ); + + // Inhalt ist mit anderer Seite verknüpft. + if ( in_array($this->element->type,array('text','longtext','date','number')) && intval($this->linkToObjectId) != 0 && !$this->isLink ) + { + $p = new Page( $this->linkToObjectId ); + $p->load(); + + $v = new Value(); + $v->isLink = true; + $v->pageid = $p->pageid; + $v->element = $this->element; + $v->languageid = $this->languageid; + $v->load(); + $v->generate(); + $this->value = $v->value; + return; + } + switch( $this->element->type ) { case 'list': diff --git a/themes/default/templates/pageelement/link.tpl.src.php b/themes/default/templates/pageelement/link.tpl.src.php @@ -0,0 +1,32 @@ +page + form + window name:element + row + cell colspan:2 class:help + text var:desc + + row + cell colspan:2 class:fx + selectbox list:objects name:linkobjectid + + if present:release + row + cell colspan:2 class:fx + checkbox name:release + label for:release + text raw:_ + text text:GLOBAL_RELEASE + + if present:publish + row + cell colspan:2 class:fx + checkbox name:publish + label for:publish + text raw:_ + text text:PAGE_PUBLISH_AFTER_SAVE + + row + cell colspan:2 class:act + button type:ok + + focus field:linko+ \ No newline at end of file