Esempio n. 1
0
 function init()
 {
     $this->head_items->add_stylesheet(REASON_ADMIN_CSS_DIRECTORY . 'sharing.css');
     reason_include_once('classes/sharing_filter.php');
     reason_include_once('content_listers/sharing.php');
     $type = new entity($this->admin_page->type_id);
     // save the type entity in an object scope
     $this->rel_type = $type;
     $this->get_views($type->id());
     if (empty($this->views)) {
         //add generic lister if not already present
         $this->views = array();
     } else {
         reset($this->views);
         $c = current($this->views);
         if ($c) {
             $lister = $c->id();
             $this->admin_page->request['lister'] = $lister;
         } else {
             $lister = '';
         }
     }
     $this->admin_page->title = $type->get_value('plural_name') ? $type->get_value('plural_name') : $type->get_value('name');
     if ($icon_url = reason_get_type_icon_url($type, false)) {
         $this->admin_page->title = '<img src="' . $icon_url . '" alt="" /> ' . $this->admin_page->title;
     }
     if ($this->admin_page->is_second_level()) {
         $this->admin_page->set_show('leftbar', false);
     }
     $this->viewer = new sharing_viewer();
     $this->viewer->set_page($this->admin_page);
     if (!isset($lister)) {
         $lister = '';
     }
     $this->viewer->init($this->admin_page->site_id, $type->id(), $lister);
     $this->filter = new sharing_filter();
     $this->filter->set_page($this->admin_page);
     $this->filter->grab_fields($this->viewer->filters);
 }
Esempio n. 2
0
 function init()
 {
     $this->verify_parameters();
     reason_include_once('classes/filter.php');
     reason_include_once('classes/viewer.php');
     reason_include_once('classes/entity_selector.php');
     reason_include_once('content_listers/default.php3');
     $this->head_items->add_javascript(WEB_JAVASCRIPT_PATH . 'lister_dropdown.js');
     include_once CARL_UTIL_INC . 'basic/misc.php';
     $this->admin_page->set_show('breadcrumbs', false);
     $type = new entity($this->admin_page->type_id);
     $this->admin_page->title = $type->get_value('plural_name') ? $type->get_value('plural_name') : $type->get_value('name');
     if ($icon_url = reason_get_type_icon_url($type, false)) {
         $this->admin_page->title = '<img src="' . $icon_url . '" alt="" /> ' . $this->admin_page->title;
     }
     $lister = isset($this->admin_page->request['lister']) ? $this->admin_page->request['lister'] : '';
     if (!isset($state) or !$state or $state == 'live') {
         $this->get_views();
         if (empty($this->views)) {
             //add generic lister if not already present
             $this->views = array();
         } else {
             if (empty($lister)) {
                 reset($this->views);
                 $c = current($this->views);
                 $lister = $c->id();
                 $this->admin_page->request['lister'] = $lister;
             }
         }
     }
     $content_viewer = $GLOBALS['_content_lister_class_names']['default.php3'];
     if (!isset($this->admin_page->request['state']) || strtolower($this->admin_page->request['state']) == 'live') {
         if (count($this->views) > 0) {
             if ($this->viewer_entity) {
                 reason_include_once('content_listers/' . $this->viewer_entity->get_value('url'));
                 $content_viewer = $GLOBALS['_content_lister_class_names'][$this->viewer_entity->get_value('url')];
             }
         }
     }
     $this->viewer = new $content_viewer();
     // check if the viewer pays attention to hierarchy and if so, add collapse javascript
     // this is not exactly pretty, but better than including collapse.js on every page.
     if (array_key_exists('children', get_object_vars($this->viewer))) {
         $this->head_items->add_javascript(WEB_JAVASCRIPT_PATH . 'collapse.js');
     }
     $this->viewer->set_page($this->admin_page);
     $this->viewer->init($this->admin_page->site_id, $this->admin_page->type_id, isset($lister) ? $lister : '');
     // }}}
     $this->filter = new filter();
     $this->filter->set_page($this->admin_page);
     $this->filter->grab_fields($this->viewer->filters);
 }
Esempio n. 3
0
 function types()
 {
     $types = $this->get_types_for_current_site();
     //remove the site_cannot_edit_type types
     $nes = new entity_selector();
     $nes->add_type(id_of('type'));
     $nes->add_right_relationship($this->site_id, relationship_id_of('site_cannot_edit_type'));
     $remove = $nes->run_one();
     $sharables = $this->get_sharable_relationships();
     $can_borrow = reason_user_has_privs($this->user_id, 'borrow');
     foreach ($remove as $id => $vals) {
         if (!$can_borrow || !isset($sharables[$id])) {
             unset($types[$id]);
         }
     }
     if ($types) {
         echo '<div class="typeNav">' . "\n";
         echo '<ul class="leftList">' . "\n";
         $mpid = id_of('minisite_page');
         if (array_key_exists($mpid, $types)) {
             $page_type_array[$mpid] = $types[id_of('minisite_page')];
             unset($types[$mpid]);
             $types = array_merge($page_type_array, $types);
         }
         foreach ($types as $type) {
             if ($type->id() == $this->type_id) {
                 $cur_type = true;
             } else {
                 $cur_type = false;
             }
             echo '<li class="navItem';
             if ($cur_type) {
                 echo ' navSelect';
             }
             echo ' uid_' . $type->get_value('unique_name');
             echo '">';
             if (isset($remove[$type->id()])) {
                 $link_url = $this->get_borrowed_list_link($type->id());
             } else {
                 $link_url = $this->get_owned_list_link($type->id());
             }
             echo '<a href="' . $link_url . '" class="nav">';
             echo '<img src="' . reason_get_type_icon_url($type) . '" alt="" />';
             $type_name = $type->get_value('plural_name') ? $type->get_value('plural_name') : $type->get_value('name');
             echo '<span class="typeName">' . $type_name . '</span>';
             echo '</a></li>' . "\n";
         }
         echo '</ul></div>';
     }
 }
Esempio n. 4
0
 function run()
 {
     echo '<div id="siteIntro">' . "\n";
     $e = new entity($this->admin_page->site_id);
     echo '<div id="siteNotices">' . "\n";
     if ($e->get_value('site_state') == "Not Live" && $e->get_value('unique_name') != 'master_admin') {
         echo '<div class="notLiveNotice"><h4>This site is not live.</h4><p>Among other things, that means that it\'s excluded from search engines (so people won\'t stumble upon a site that isn\'t ready for public consumption).</p>' . "\n";
         if (user_can_edit_site($this->admin_page->user_id, id_of('master_admin'))) {
             echo '<p><a href="' . $this->admin_page->make_link(array('site_id' => id_of('master_admin'), 'type_id' => id_of('site'), 'id' => $e->id(), 'cur_module' => 'Editor')) . '">Edit this site</a></p>' . "\n";
         } else {
             echo '<p>Please contact ' . REASON_CONTACT_INFO_FOR_CHANGING_USER_PERMISSIONS . ' when you are ready to make this site live.</p>' . "\n";
         }
         echo '</div>' . "\n";
     }
     if ($e->get_value('description')) {
         echo '<div id="siteDesc">' . "\n";
         if (strip_tags($e->get_value('description')) == $e->get_value('description')) {
             echo nl2br($e->get_value('description'));
         } else {
             echo $e->get_value('description');
         }
         echo '</div>' . "\n";
     }
     $sites = $this->admin_page->get_sites();
     if (count($sites) == 1) {
         parent::run();
     }
     echo '</div>' . "\n";
     echo '<div id="guide">' . "\n";
     $es = new entity_selector();
     $es->add_type(id_of('type'));
     $es->add_right_relationship($e->id(), relationship_id_of('site_to_type'));
     $es->limit_tables();
     $es->limit_fields();
     $non_editable_es = carl_clone($es);
     $non_editable_es->add_right_relationship($e->id(), relationship_id_of('site_cannot_edit_type'));
     $noneditable_types = $non_editable_es->run_one();
     if (!empty($noneditable_types)) {
         $es->add_relation('entity.id NOT IN (' . implode(',', array_keys($noneditable_types)) . ')');
     }
     $es->set_order('entity.name ASC');
     $types = $es->run_one();
     if (array_key_exists(id_of('minisite_page'), $types)) {
         $page_type_array[id_of('minisite_page')] = $types[id_of('minisite_page')];
         unset($types[id_of('minisite_page')]);
         $types = array_merge($page_type_array, $types);
     }
     echo '<ul>' . "\n";
     foreach ($types as $type) {
         $es = new entity_selector($e->id());
         $es->set_sharing('owns');
         $es->add_type($type->id());
         $es->limit_tables();
         $es->limit_fields();
         $es->set_order('entity.last_modified DESC');
         if (reason_user_has_privs($this->admin_page->user_id, 'edit')) {
             $state = 'Live';
             $state_link_val = 'live';
         } else {
             $state = 'Pending';
             $state_link_val = 'pending';
         }
         $ents = $es->run_one($type->id(), $state);
         $ents_count = count($ents);
         $name = $type->get_value('plural_name') ? $type->get_value('plural_name') : $type->get_value('name');
         echo '<li class="' . $type->get_value('unique_name') . '" style="list-style-image:url(' . reason_get_type_icon_url($type) . ')">';
         echo '<h4><a href="' . $this->admin_page->make_link(array('type_id' => $type->id(), 'cur_module' => 'Lister', 'state' => $state_link_val)) . '">' . $name . '</a> <span class="count">(' . $ents_count . ')</span></h4>' . "\n";
         if (!empty($ents)) {
             echo '<div class="recent">' . "\n";
             echo 'Recently edited:' . "\n";
             echo '<ul>' . "\n";
             $i = 1;
             foreach ($ents as $ent_id => $ent) {
                 if ($i > 3) {
                     break;
                 }
                 $name = strip_tags($ent->get_display_name());
                 if (empty($name)) {
                     $name = '[unnamed]';
                 }
                 echo '<li class="item' . $i . '"><a href="' . $this->admin_page->make_link(array('type_id' => $type->id(), 'id' => $ent_id, 'cur_module' => 'Editor')) . '">' . $name . '</a></li>' . "\n";
                 $i++;
             }
             echo '</ul>' . "\n";
             echo '</div>' . "\n";
         }
         echo '</li>' . "\n";
     }
     echo '</ul>' . "\n";
     echo '</div>' . "\n";
     echo '</div>' . "\n";
 }