X-Git-Url: http://git.roojs.org/?p=web.mtrack;a=blobdiff_plain;f=MTrackWeb.php;h=27a511ae2f058cbea1d945b315c9d0afe0b9ed84;hp=dc5b19237f96a857ae2ce2ae48a08634b692fbd9;hb=HEAD;hpb=04396ebcaa4292b0e4461a6fed39aa2ab221839b diff --git a/MTrackWeb.php b/MTrackWeb.php index dc5b1923..03e3c3c2 100644 --- a/MTrackWeb.php +++ b/MTrackWeb.php @@ -10,6 +10,8 @@ class MTrackWeb extends HTML_FlexyFramework_Page var $priorities = array(); var $severities = array(); var $link = false; // the link handler.. + var $authUser; + var $currentProject; function hasPerm($what, $cando) { // our whole perm logic sits in here.... @@ -36,7 +38,7 @@ class MTrackWeb extends HTML_FlexyFramework_Page if (!$project_id) { return false; } - $p = DB_DataObject::factory('Projects'); + $p = DB_DataObject::factory('core_project'); $p->get($project_id); if (!$this->authUser) { if ($p->code != '*PUBLIC') { @@ -75,45 +77,60 @@ class MTrackWeb extends HTML_FlexyFramework_Page return true; } + /** + * currentProject: + * + * @param {int} $val set the current project (optional) + * @return {int} The current project id. + * + * + * + */ function currentProject($val = false) { // we do need the option for me to look at all projects... + + static $currentProject = false; if (empty($_SESSION[__CLASS__])) { $_SESSION[__CLASS__] = array(); } + + if (isset($_SESSION[__CLASS__]['active_project_id'])) { + $currentProject = $_SESSION[__CLASS__]['active_project_id']; + } + if ($val !== false) { // attempt to set it.. $_SESSION[__CLASS__]['active_project_id'] = $val ; - $currentProject = false; + $currentProject = $val ; // reset to ensure not cached.. } - if ($currentProject !== false) { - return $currentProject; - } - $p = DB_DataObject::factory('Projects'); - $ar = array(); - if ($this->authUser) { - $p->applyFilters(array(), $this->authUser); - $p->whereAdd('id in (SELECT distinct(project_id) FROM mtrack_repos)'); - unset($p->client_id); - $ar = $p->fetchAll('id', 'name'); - } + + $ar = $this->userProjects(); + + if (!isset($ar[$currentProject])) { + $currentProject = false; + $_SESSION[__CLASS__]['active_project_id'] = false; + } + if ($currentProject !== false) { + // var_dump($currentProject); + return $currentProject; + } + //print_r($ar); - if (empty($_SESSION[__CLASS__]['active_project_id']) || - !isset($ar[$_SESSION[__CLASS__]['active_project_id']])) - { + if (empty($currentProject)) { - $p = DB_DataObject::factory('Projects'); - $p->get('code', '*PUBLIC'); - $id = $p->id; + //$p = DB_DataObject::factory('core_project'); + //$p->get('code', '*PUBLIC'); + $id = 0; foreach($ar as $k=>$v) { $id= $k; break; @@ -124,6 +141,7 @@ class MTrackWeb extends HTML_FlexyFramework_Page $currentProject = $_SESSION[__CLASS__]['active_project_id']; return $id; // always allowed.. } + //var_dump($currentProject); $currentProject = $_SESSION[__CLASS__]['active_project_id']; return $_SESSION[__CLASS__]['active_project_id']; @@ -131,29 +149,42 @@ class MTrackWeb extends HTML_FlexyFramework_Page } - function loadProjectList() + function userProjects() { - // DB_DataObject::debugLevel(1); - - $p = DB_DataObject::factory('Projects'); + + $p = DB_DataObject::factory('core_project'); if (!$this->authUser) { $p->code = '*PUBLIC'; $ar = $p->fetchAll('id', 'name'); } else { - $p->applyFilters(array(), $this->authUser); - - $p->whereAdd("Projects.id in (SELECT ProjectDirectory.project_id FROM ProjectDirectory WHERE - user_id = '. $this->authUser->id . ' and role != '')") - + // DB_DAtaObject::debugLevel(1); + $p->applyFilters(array(), $this->authUser, $this); + if (!$this->authUser->hasPerm('Core.Projects_All', 'S')) { + $p->whereAdd("Projects.id in (SELECT ProjectDirectory.project_id FROM ProjectDirectory WHERE + person_id = ". $this->authUser->id . " and role != '')"); + } + /* + * SOME PROJECTS MIGHT NOT HAVE REPO's... $p->whereAdd('id in (SELECT distinct(project_id) FROM mtrack_repos)'); + */ // $pd->whereAdd("role != ''"); - $p->orderBy('Projects.name ASC'); + $p->orderBy('core_project.name ASC'); unset($p->client_id); // default projects serach enforces this.. $ar = $p->fetchAll('id', 'name'); } + return $ar; + + } + + + function loadProjectList() + { + // DB_DataObject::debugLevel(1); + + $ar = $this->userProjects(); $this->elements['active_project_id'] = new HTML_Template_Flexy_Element(); $this->elements['active_project_id']->setOptions($ar); @@ -167,7 +198,7 @@ class MTrackWeb extends HTML_FlexyFramework_Page function getAuthUser() { - $u = DB_DataObject::factory('Person'); + $u = DB_DataObject::factory('core_person'); if (!$u->isAuth()) { return false; } @@ -194,13 +225,21 @@ class MTrackWeb extends HTML_FlexyFramework_Page //MTrackConfig::boot(); // eak.. .remove me... - $this->authUser = DB_DataObject::factory('Person')->getAuthUser(); + $this->authUser = DB_DataObject::factory('core_person')->getAuthUser(); $this->loadProjectList(); + + $p = DB_DataObject::factory('core_project'); + $p->get($this->currentProject()); + $this->currentProject = $p; /// mix up? + + + if (!$this->authUser) { return true; // we do allow people in this far.. } + // very public?? $this->authUserArray = $this->authUser->toArray(); unset($this->authUserArray['passwd']); @@ -210,8 +249,7 @@ class MTrackWeb extends HTML_FlexyFramework_Page date_default_timezone_set($this->authUser->timezone); } - - + /// fixme... //$this->authUser = @@ -220,19 +258,30 @@ class MTrackWeb extends HTML_FlexyFramework_Page function get($loc='') { // + + + HTML_FlexyFramework::get()->generateDataobjectsCache(); + + if (!empty($loc)) { die ("invalid location". htmlspecialchars($loc)); } + + + if (!$this->authUser) { return HTML_FlexyFramework::run('Wiki'); } + + + return HTML_FlexyFramework::run('Wiki/Today'); } - function post() + function post($request) { header("Status: 404 Not Found"); - die("not valid"); + die("invalid post request? "); } @@ -255,50 +304,14 @@ class MTrackWeb extends HTML_FlexyFramework_Page function registerClasses() { - require_once 'MTrack/Wiki.php'; - require_once 'MTrack/Wiki/Item.php'; - // require_once 'MTrack/Milestone.php'; - - + // wiki rendering is done client side... + // require_once 'MTrack/Wiki/HTMLFormatter.php'; require_once 'MTrackWeb/LinkHandler.php'; - require_once 'MTrack/Wiki/HTMLFormatter.php'; - $this->link = new MTrackWeb_LinkHandler(); - MTrack_Wiki_HTMLFormatter::registerLinkHandler($this->link); + //MTrack_Wiki_HTMLFormatter::registerLinkHandler($this->link); - - $r = DB_DataObject::factory('mtrack_repos'); - $r->loadFromPath('default/wiki'); - MTrack_Wiki_Item::$repo = $r->impl(); - - - - //MTrack_Wiki::register_macro('MilestoneSummary', array('MTrack_Milestone', 'macro_MilestoneSummary')); - // MTrack_Wiki::register_macro('BurnDown', array('MTrack_Milestone', 'macro_BurnDown')); - //MTrack_Wiki::register_macro('RunReport', array('MTrack_Report', 'macro_RunReport')); << fixme how are we to hanlde this.. - //MTrack_Wiki::register_macro('TicketQuery', array('MTrack_Report', 'macro_TicketQuery')); - MTrack_Wiki::register_macro('IncludeWikiPage', array('MTrack_Wiki', 'macro_IncludeWiki')); - MTrack_Wiki::register_macro('IncludeHelpPage', array('MTrack_Wiki', 'macro_IncludeHelp')); - MTrack_Wiki::register_macro('Comment', array('MTrack_Wiki', 'macro_comment')); - MTrack_Wiki::register_processor('comment', array('MTrack_Wiki', 'processor_comment')); - MTrack_Wiki::register_processor('html', array('MTrack_Wiki', 'processor_html')); - MTrack_Wiki::register_processor('dataset', array('MTrack_Wiki', 'processor_dataset')); - + return; - //MTrackSearchDB::register_indexer('ticket', array('MTrackIssue', 'index_issue')); - //MTrackSearchDB::register_indexer('wiki', array('MTrack_Wiki_Item', 'index_item')); - - - - //MTrackWatch::registerEventTypes('ticket', array( 'ticket' => 'Tickets' )); - //MTrackWatch::registerEventTypes('milestone', array( 'ticket' => 'Tickets', 'changeset' => 'Code changes' )); - //MTrackWatch::registerEventTypes('repo', array( 'ticket' => 'Tickets', 'changeset' => 'Code changes' )); - - // should this get registered here?? - //MTrackCommitChecker::addCheck('Wiki'); - - - } function favicon() @@ -496,6 +509,23 @@ class MTrackWeb extends HTML_FlexyFramework_Page } + function packJS($dir) + { + + // target has to be 'aliased' + // target filename can be an md5.. + + require_once 'Pman/Core/JsCompile.php'; + $x = new Pman_Core_JsCompile(); + $x->packScript(dirname(__FILE__).'/MTrackWeb/templates/images', + array($dir), + $this->rootURL . '/MTrackWeb/templates/images', + false // do not compile + ); + //); + + + }