openrat-cms

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

commit d2e07430d00f501f85e01c4cab31114424709829
parent 270b91b63e88369b58a8c9bec0c3c57a79b5a9b7
Author: Jan Dankert <devnull@localhost>
Date:   Tue, 16 Oct 2012 23:55:04 +0200

Anzeigen einer Timeline, in der die letzten Änderungen dargestellt werden.

Diffstat:
action/StartAction.class.php | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
language/de.ini.php | 4++++
model/Project.class.php | 145+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
themes/default/layout/perspective/normal.ini.php | 7+++----
themes/default/layout/perspective/profile.ini.php | 4+++-
themes/default/layout/perspective/start.ini.php | 11++++++-----
themes/default/templates/start/applications.tpl.src.xml | 29+++++++++++++++++++++++++----
themes/default/templates/start/projectmenu.tpl.src.xml | 44++++++++++++++++++++++++++++++++++++++++----
themes/default/templates/start/projecttimeline.tpl.src.xml | 39+++++++++++++++++++++++++++++++++++++++
themes/default/templates/start/timeline.tpl.src.xml | 40++++++++++++++++++++++++++++++++++++++++
themes/default/templates/start/userprojecttimeline.tpl.src.xml | 32++++++++++++++++++++++++++++++++
themes/default/templates/start/usertimeline.tpl.src.xml | 32++++++++++++++++++++++++++++++++
12 files changed, 427 insertions(+), 28 deletions(-)

diff --git a/action/StartAction.class.php b/action/StartAction.class.php @@ -365,7 +365,7 @@ class StartAction extends Action /** * Erzeugt ein Projekt-Auswahlmenue. */ - function projectmenuView() + public function projectmenuView() { $user = Session::getUser(); @@ -421,7 +421,7 @@ class StartAction extends Action /** * Erzeugt eine Anwendungsliste. */ - function applicationsView() + public function applicationsView() { global $conf; @@ -1372,7 +1372,7 @@ class StartAction extends Action * Registriercode erzeugen und per E-Mail dem Benutzer mitteilen. * Maske anzeigen, damit Benuter Registriercode anzeigen kann. */ - function registercode() + public function registercode() { $email_address = $this->getRequestVar('mail','mail'); @@ -1409,7 +1409,7 @@ class StartAction extends Action - function registeruserdata() + public function registeruserdata() { global $conf; @@ -1435,7 +1435,7 @@ class StartAction extends Action * Benutzerregistierung. * Benutzer hat Best�tigungscode erhalten und eingegeben. */ - function registercommit() + public function registercommit() { global $conf; $this->checkForDb(); @@ -1493,7 +1493,7 @@ class StartAction extends Action /** * Vergessenes Kennwort zusenden lassen. */ - function password() + public function password() { global $conf; @@ -1564,7 +1564,7 @@ class StartAction extends Action /** * Einen Kennwort-Anforderungscode an den Benutzer senden. */ - function passwordcode() + public function passwordcode() { if ( !$this->hasRequestVar('username') ) { @@ -1611,7 +1611,7 @@ class StartAction extends Action * Anzeige Formular zum Eingeben des Kennwort-Codes. * */ - function passwordinputcode() + public function passwordinputcode() { } @@ -1620,7 +1620,7 @@ class StartAction extends Action /** * Neues Kennwort erzeugen und dem Benutzer zusenden. */ - function passwordcommit() + public function passwordcommit() { $username = $this->getSessionVar("password_commit_name"); @@ -1664,7 +1664,7 @@ class StartAction extends Action /** * Erzeugt eine neue Sitzung. */ - function recreateSession() + private function recreateSession() { // PHP < 4.3.2 kennt die Funktion session_regenerate_id() nicht. @@ -1697,7 +1697,55 @@ class StartAction extends Action } } + + /** + * Ermittelt die letzten Änderungen, die durch den aktuellen Benutzer in allen Projekten gemacht worden sind. + */ + public function usertimelineView() + { + $result = Project::getMyAllLastChanges(); + $this->setTemplateVar('timeline', $result); + } + + + + /** + * Ermittelt die letzten Änderungen, die durch den aktuellen Benutzer im aktuellen Projekt gemacht worden sind. + */ + public function userprojecttimelineView() + { + $project = Session::getProject(); + Logger::debug('1'); + $result = $project->getMyLastChanges(); + + $this->setTemplateVar('timeline', $result); + } + + + + /** + * Ermittelt die letzten Änderungen, die in allen Projekten gemacht worden sind. + */ + public function timelineView() + { + $result = Project::getAllLastChanges(); + $this->setTemplateVar('timeline', $result); + } + + + + /** + * Ermittelt die letzten Änderungen, die im aktuellen Projekt gemacht worden sind. + */ + public function projecttimelineView() + { + $project = Session::getProject(); + + $result = $project->getLastChanges(); + + $this->setTemplateVar('timeline', $result); + } } diff --git a/language/de.ini.php b/language/de.ini.php @@ -1144,3 +1144,7 @@ MENU_PREVIEW="Vorschau" MENU_CLIPBOARD="Zwischenablage" MENU_CONSOLE="Konsole" CANCEL="Abbrechen" +MENU_USERPROJECTTIMELINE="Meine Änderungen" +MENU_USERTIMELINE="Meine Änderungen" +MENU_PROJECTTIMELINE="Verlauf" +MENU_TIMELINE="Verlauf" diff --git a/model/Project.class.php b/model/Project.class.php @@ -750,6 +750,151 @@ SQL return $info; } + + + /** + * Ermittelt projektübergreifend die letzten Änderungen des angemeldeten Benutzers. + * + * @return Ambigous <string, unknown> + */ + public static function getMyAllLastChanges() + { + $db = db_connection(); + + $sql = new Sql( <<<SQL + SELECT {t_object}.id as objectid, + {t_object}.filename as filename, + {t_object}.lastchange_date as lastchange_date, + {t_project}.id as projectid, + {t_project}.name as projectname + FROM {t_object} + LEFT JOIN {t_project} + ON {t_object}.projectid = {t_project}.id + WHERE {t_object}.lastchange_userid = {userid} + ORDER BY {t_object}.lastchange_date DESC +SQL + ); + + $user = Session::getUser(); + $sql->setInt( 'userid', $user->userid ); + + return $db->getAll( $sql ); + + } + + + /** + * Ermittelt projektübergreifend die letzten Änderungen des angemeldeten Benutzers. + * + * @return Ambigous <string, unknown> + */ + public function getMyLastChanges() + { + + $db = db_connection(); + + + $sql = new Sql( <<<SQL + SELECT {t_object}.id as objectid, + {t_object}.filename as filename, + {t_object}.lastchange_date as lastchange_date, + {t_name}.name as name + FROM {t_object} + LEFT JOIN {t_name} + ON {t_name}.objectid = {t_object}.id + AND {t_name}.languageid = {languageid} + LEFT JOIN {t_project} + ON {t_object}.projectid = {t_project}.id + WHERE {t_object}.projectid = {projectid} + AND {t_object}.lastchange_userid = {userid} + ORDER BY {t_object}.lastchange_date DESC; +SQL + ); + + // Variablen setzen. + $sql->setInt( 'projectid', $this->projectid ); + + $language = Session::getProjectLanguage(); + $sql->setInt( 'languageid', $language->languageid ); + + $user = Session::getUser(); + $sql->setInt( 'userid', $user->userid ); + + return $db->getAll( $sql ); + } + + + /** + * Ermittelt projektübergreifend die letzten Änderungen. + * + * @return Ambigous <string, unknown> + */ + public static function getAllLastChanges() + { + $db = db_connection(); + + $sql = new Sql( <<<SQL + SELECT {t_object}.id as objectid, + {t_object}.lastchange_date as lastchange_date, + {t_object}.filename as filename, + {t_project}.id as projectid, + {t_project}.name as projectname, + {t_user}.name as username, + {t_user}.id as userid, + {t_user}.mail as usermail, + {t_user}.fullname as userfullname + FROM {t_object} + LEFT JOIN {t_project} + ON {t_object}.projectid = {t_project}.id + LEFT JOIN {t_user} + ON {t_user}.id = {t_object}.lastchange_userid + ORDER BY {t_object}.lastchange_date DESC + LIMIT 50 +SQL + ); + + return $db->getAll( $sql ); + } + + + + /** + * Ermittelt die letzten Änderung im Projekt. + * @return Array[Objektid]=Array()) + */ + public function getLastChanges() + { + + $db = db_connection(); + + $sql = new Sql( <<<SQL + SELECT {t_object}.id as objectid, + {t_object}.lastchange_date as lastchange_date, + {t_object}.filename as filename, + {t_name}.name as name, + {t_user}.name as username, + {t_user}.id as userid, + {t_user}.mail as usermail, + {t_user}.fullname as userfullname + FROM {t_object} + LEFT JOIN {t_name} + ON {t_name}.objectid = {t_object}.id + AND {t_name}.languageid = {languageid} + LEFT JOIN {t_user} + ON {t_user}.id = {t_object}.lastchange_userid + WHERE {t_object}.projectid = {projectid} + ORDER BY {t_object}.lastchange_date DESC +SQL + ); + + // Variablen setzen. + $sql->setInt( 'projectid', $this->projectid ); + + $language = Session::getProjectLanguage(); + $sql->setInt( 'languageid', $language->languageid ); + + return $db->getAll( $sql ); + } } ?> \ No newline at end of file diff --git a/themes/default/layout/perspective/normal.ini.php b/themes/default/layout/perspective/normal.ini.php @@ -13,10 +13,9 @@ refreshable=false [content] -title= -default=show -views= -action= +views=projecttimeline,userprojecttimeline +default=projecttimeline +action=start refreshable=true [side] diff --git a/themes/default/layout/perspective/profile.ini.php b/themes/default/layout/perspective/profile.ini.php @@ -2,7 +2,9 @@ [tree] -views= +views=usertimeline +default = usertimeline +action=start [content] diff --git a/themes/default/layout/perspective/start.ini.php b/themes/default/layout/perspective/start.ini.php @@ -1,15 +1,17 @@ <?php ?> [tree] -views= +views=projectmenu +default=projectmenu +action=start +refreshable=false [content] -views=projectmenu +views=timeline,usertimeline +default=timeline action=start refreshable=false -default=projectmenu -modal = false [side] views=applications @@ -17,6 +19,5 @@ action=start refreshable=false default=applications - [bottom] views= diff --git a/themes/default/templates/start/applications.tpl.src.xml b/themes/default/templates/start/applications.tpl.src.xml @@ -1,3 +1,24 @@ -<output xmlns="http://www.openrat.de/template" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"><dummy><window width="600" icon="project"><row><column colspan="2"><link action="index" subaction="projectmenu"><text raw="OpenRat"></text></link></column></row><list list="applications" extract="true"><row><column><link url="var:url"><text var="name"></text></link></column><column><text var="description"></text></column></row></list></window></dummy></output>- \ No newline at end of file +<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"> + <table> + <row class="data"> + <column colspan="2"> + <link action="index" subaction="projectmenu"> + <text raw="OpenRat"></text> + </link> + </column> + </row> + <list list="applications" extract="true"> + <row class="data"> + <column> + <link url="var:url"> + <text var="name"></text> + </link> + </column> + <column> + <text var="description"></text> + </column> + </row> + </list> + </table> +</output>+ \ No newline at end of file diff --git a/themes/default/templates/start/projectmenu.tpl.src.xml b/themes/default/templates/start/projectmenu.tpl.src.xml @@ -1,3 +1,39 @@ -<output xmlns="http://www.openrat.de/template" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"><dummy><window title="GLOBAL_PROJECTS"><row><column class="logo" colspan="2"><logo name="projectmenu"></logo></column></row><list list="projects" extract="true"><row><column colspan="2"><group title="var:name"><link type="post" id="var:id" title="message:TREE_CHOOSE_PROJECT"><set var="project" value="project"></set><image type="project"></image><text var="name" maxlength="30"></text></link><form action="index" subaction="project" id="var:id"><table widths="150px,150px"><row><column><radiobox list="models" name="modelid" default="var:defaultmodelid"></radiobox></column><column><radiobox list="languages" name="languageid" default="var:defaultlanguageid"></radiobox></column><column><button type="ok" text="message:start"></button></column></row></table></form></group></column></row></list></window></dummy></output>- \ No newline at end of file +<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"> + <table> + <row> + <column class="logo" colspan="2"> + <logo name="projectmenu"></logo> + </column> + </row> + <list list="projects" extract="true"> + <row> + <column colspan="2"> + <group title="var:name"> + <link type="post" id="var:id" title="message:TREE_CHOOSE_PROJECT"> + <set var="project" value="project"></set> + <image type="project"></image> + <text var="name" maxlength="30"></text> + </link> + <form action="index" subaction="project" id="var:id"> + <table widths="150px,150px"> + <row> + <column> + <radiobox list="models" name="modelid" default="var:defaultmodelid"></radiobox> + </column> + <column> + <radiobox list="languages" name="languageid" + default="var:defaultlanguageid"></radiobox> + </column> + <column> + <button type="ok" text="message:start"></button> + </column> + </row> + </table> + </form> + </group> + </column> + </row> + </list> + </table> +</output>+ \ No newline at end of file diff --git a/themes/default/templates/start/projecttimeline.tpl.src.xml b/themes/default/templates/start/projecttimeline.tpl.src.xml @@ -0,0 +1,38 @@ +<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"> + + <table> + <row class="headline"> + <column> + <text key="name"></text> + </column> + <column> + <text key="filename"></text> + </column> + <column> + <text key="user_username"></text> + </column> + <column> + <text key="lastchange" /> + </column> + </row> + <list list="timeline" extract="true"> + <row class="data"> + <column> + <link url="var:url"> + <text var="name"></text> + </link> + </column> + <column> + <text var="filename"></text> + </column> + <column> + <text var="username"></text> + </column> + <column> + <date date="var:lastchange_date" /> + </column> + </row> + </list> + </table> +</output>+ \ No newline at end of file diff --git a/themes/default/templates/start/timeline.tpl.src.xml b/themes/default/templates/start/timeline.tpl.src.xml @@ -0,0 +1,39 @@ +<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"> + <table> + <row class="headline"> + <column> + <text key="name"></text> + </column> + <column> + <text key="filename"></text> + </column> + <column> + <text key="user_username"></text> + </column> + <column> + <text key="lastchange" /> + </column> + </row> + + <list list="timeline" extract="true"> + <row class="data"> + <column> + <link url="var:url"> + <text var="projectname"></text> + </link> + </column> + <column> + <text var="filename"></text> + </column> + <column> + <text var="username"></text> + </column> + <column> + <date date="var:lastchange_date" /> + </column> + + </row> + </list> + </table> +</output>+ \ No newline at end of file diff --git a/themes/default/templates/start/userprojecttimeline.tpl.src.xml b/themes/default/templates/start/userprojecttimeline.tpl.src.xml @@ -0,0 +1,31 @@ +<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"> + <table> + <row class="headline"> + <column> + <text key="name"></text> + </column> + <column> + <text key="filename"></text> + </column> + <column> + <text key="lastchange" /> + </column> + </row> + + <list list="timeline" extract="true"> + <row class="data"> + <column> + <text var="name"></text> + </column> + <column> + <text var="filename"></text> + </column> + <column> + <date date="var:lastchange_date" /> + </column> + + </row> + </list> + </table> +</output>+ \ No newline at end of file diff --git a/themes/default/templates/start/usertimeline.tpl.src.xml b/themes/default/templates/start/usertimeline.tpl.src.xml @@ -0,0 +1,31 @@ +<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../template.xsd"> + <table> + <row class="headline"> + <column> + <text key="project"></text> + </column> + <column> + <text key="filename"></text> + </column> + <column> + <text key="lastchange" /> + </column> + </row> + + <list list="timeline" extract="true"> + <row class="data"> + <column> + <text var="projectname"></text> + </column> + <column> + <text var="filename"></text> + </column> + <column> + <date date="var:lastchange_date" /> + </column> + + </row> + </list> + </table> +</output>+ \ No newline at end of file