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); }
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); }
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>'; } }
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"; }