commit fb5878341ec5492a5ebc3bdbddaf28b4c7b7ce75
parent 6e93e145bbd2727dd5b2a098842813bf7615a88e
Author: dankert <devnull@localhost>
Date: Sat, 18 Apr 2009 01:19:09 +0200
Einbau Up-To-Date-Check
Diffstat:
3 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/actionClasses/PageelementAction.class.php b/actionClasses/PageelementAction.class.php
@@ -154,7 +154,8 @@ class PageelementAction extends Action
$this->setTemplateVar('desc' ,$this->value->element->desc );
$this->setTemplateVar('elementid',$this->value->element->elementid);
$this->setTemplateVar('type' ,$this->value->element->type );
-
+ $this->setTemplateVar('value_time',time() );
+
$this->value->page = new Page( $this->page->objectid );
$this->value->page->languageid = $this->value->languageid;
@@ -863,10 +864,17 @@ class PageelementAction extends Action
// Inhalt sofort freigegeben, wenn
// - Recht vorhanden
// - Freigabe gewuenscht
- if ( $value->page->hasRight( ACL_RELEASE ) && $this->getRequestVar('release')!='' )
- $value->publish = true;
+ if ( $value->page->hasRight( ACL_RELEASE ) && $this->hasRequestVar('release') )
+ $value->publish = true;
else
- $value->publish = false;
+ $value->publish = false;
+
+ // Up-To-Date-Check
+ $lastChangeTime = $value->getLastChangeTime();
+ if ( $lastChangeTime > $this->getRequestVar('value_time') )
+ {
+ $this->addNotice('pageelement',$value->element->name,'CONCURRENT_VALUE_CHANGE',OR_NOTICE_WARN,array('last_change_time'=>date(lang('DATE_FORMAT'),$lastChangeTime)));
+ }
// Inhalt speichern
diff --git a/language/de.ini.php b/language/de.ini.php
@@ -862,6 +862,8 @@ NOTICE_USER_ADDED = "Der Benutzer wurde hinzugefügt."
NOTICE_USER_ADDED_TO_GROUP = "Die Mitgliedschaften in der Gruppe wurden aktualisiert, {count} Benutzer hinzugefügt."
NOTICE_USER_ALREADY_IN_DATABASE = "Der Benutzer ist bereits vorhanden. Bitte wählen Sie einen anderen Benutzernamen."
NOTICE_VALUE_SAVED = "Inhalt wurde gespeichert."
+NOTICE_CONCURRENT_VALUE_CHANGE="Während Ihrer Bearbeitung ist dieser Inhalt von einem anderen Benutzer um {last_change_time} geändert worden. Ihre Änderungen wurden gespeichert, prüfen Sie jedoch über das Archiv, ob gemachte Änderungen von Ihnen übernommen werden müssen."
+NOTICE_CONCURRENT_VALUE_CHANGE_NOT_SAVED="Während Ihrer Bearbeitung ist der Inhalt von einem anderen Benutzer um {last_change_time} geändert worden. Ihre Änderung wird nicht gespeichert."
OPENID="Open-ID"
OPENID_USER="Open-ID Benutzername"
OPTIONS="Optionen"
diff --git a/objectClasses/Value.class.php b/objectClasses/Value.class.php
@@ -293,6 +293,28 @@ class Value
}
+ function getLastChangeTime()
+ {
+ $db = db_connection();
+
+ $sql = new Sql(
+<<<SQL
+ SELECT lastchange_date FROM {t_value}
+ WHERE elementid ={elementid}
+ AND pageid ={pageid}
+ AND languageid={languageid}
+ ORDER BY id DESC
+SQL
+ );
+ $sql->setInt( 'elementid' ,$this->element->elementid );
+ $sql->setInt( 'pageid' ,$this->pageid );
+ $sql->setInt( 'languageid',$this->languageid);
+
+ return $db->getOne( $sql->query );
+ }
+
+
+
/**
* Inhalt freigeben
*/
@@ -745,11 +767,11 @@ SQL
$inhalt = $this->element->defaultText;
// Wenn HTML nicht erlaubt und Wiki-Formatierung aktiv, dann einfache HTML-Tags in Wiki umwandeln
- if ( !$this->element->html && $this->element->wiki && $conf['wiki']['convert_html'] && $this->page->mimeType()=='text/html' )
+ if ( !$this->element->html && $this->element->wiki && $conf['editor']['wiki']['convert_html'] && $this->page->mimeType()=='text/html' )
$inhalt = Text::html2Wiki( $inhalt );
// Wenn Wiki-Formatierung aktiv, dann BB-Code umwandeln
- if ( $this->element->wiki && $conf['wiki']['convert_bbcode'] )
+ if ( $this->element->wiki && $conf['editor']['wiki']['convert_bbcode'] )
$inhalt = Text::bbCode2Wiki( $inhalt );
// Wenn HTML nicht erlaubt ist, dann die HTML-Tags ersetzen