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:
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