Safe::closedir($dir); } if ($text) { $context['text'] .= Skin::build_content(NULL, i18n::s('Use the library'), $text); } // display the current gravatar, if any if (isset($item['email']) && $item['email']) { $text = ''; // the gravatar url $url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . md5($item['email']); // it is already in use if (isset($item['avatar_url']) && $url == $item['avatar_url']) { $text .= '<p>' . sprintf(i18n::s('Your are using your %s as current picture.'), Skin::build_link('http://www.gravatar.com/', i18n::s('gravatar'), 'external')) . '</p>' . "\n"; } else { $text .= '<p>' . sprintf(i18n::s('I have a %s and %s'), Skin::build_link('http://www.gravatar.com/', i18n::s('gravatar'), 'external'), '<a href="' . $context['url_to_root'] . 'users/select_avatar.php?id=' . $id . '&avatar=' . urlencode($url) . '">' . i18n::s('would like to use it') . '</a>') . '</p>' . "\n"; } $context['text'] .= Skin::build_content(NULL, i18n::s('Use a gravatar'), $text); } // // bottom commands // $menu = array(); global $render_overlaid; if (!$render_overlaid) { $menu[] = Skin::build_link(Users::get_permalink($item), i18n::s('Cancel'), 'span'); } //$menu[] = Skin::build_link(Users::get_permalink($item), i18n::s('Cancel'), 'button'); $context['text'] .= Skin::finalize_list($menu, 'assistant_bar'); } // render the skin render_skin();
if (Sections::is_owned($item, $anchor, TRUE) || Surfer::is_associate()) { Skin::define_img('SECTIONS_ASSIGN_IMG', 'sections/assign.gif'); $box['bar'] += array(Users::get_url('section:' . $item['id'], 'select') => SECTIONS_ASSIGN_IMG . i18n::s('Manage participants')); // leave this section, for editors } elseif (Sections::is_assigned($item['id'])) { Skin::define_img('SECTIONS_ASSIGN_IMG', 'sections/assign.gif'); $box['bar'] += array(Users::get_url('section:' . $item['id'], 'leave') => SECTIONS_ASSIGN_IMG . i18n::s('Leave this section')); } // headers $headers = array(i18n::s('Person'), i18n::s('Watcher'), i18n::s('Editor'), i18n::s('Owner')); // layout columns if ($rows) { $box['text'] .= Skin::table($headers, $rows, 'grid'); } // actually render the html $users .= Skin::build_content(NULL, NULL, $box['text'], $box['bar']); } // display in a separate panel if ($users) { $label = i18n::s('Persons'); if ($users_count) { $label .= ' (' . $users_count . ')'; } $panels[] = array('users', $label, 'users_panel', $users); } // // assemble all tabs // $context['text'] .= Skin::build_tabs($panels); // buttons to display previous and next pages, if any if (isset($neighbours) && $neighbours) {
/** * list articles * * @param resource the SQL result * @return a string to be displayed * * @see layouts/layout.php **/ function layout($result) { global $context; // we return some text $text = ''; // empty list if (!SQL::count($result)) { return $text; } // no hovering label $href_title = ''; // we build an array for the skin::build_tabs() function $panels = array(); // process all items in the list while ($item = SQL::fetch($result)) { // get the main anchor $anchor = Anchors::get($item['anchor']); // get the related overlay, if any $overlay = Overlay::load($item, 'article:' . $item['id']); // panel content $text = ''; // insert anchor prefix if (is_object($anchor)) { $text .= $anchor->get_prefix(); } // the introduction text, if any if (is_object($overlay)) { $text .= Skin::build_block($overlay->get_text('introduction', $item), 'introduction'); } elseif (isset($item['introduction']) && trim($item['introduction'])) { $text .= Skin::build_block($item['introduction'], 'introduction'); } // get text related to the overlay, if any if (is_object($overlay)) { $text .= $overlay->get_text('view', $item); } // filter description, if necessary if (is_object($overlay)) { $description = $overlay->get_text('description', $item); } else { $description = $item['description']; } // the beautified description, which is the actual page body if ($description) { // use adequate label if (is_object($overlay) && ($label = $overlay->get_label('description'))) { $text .= Skin::build_block($label, 'title'); } // beautify the target page $text .= Skin::build_block($description, 'description', '', $item['options']); } // list files only to people able to change the page if (Articles::allow_modification($item, $anchor)) { $embedded = NULL; } else { $embedded = Codes::list_embedded($item['description']); } // build a complete box $box = array('bar' => array(), 'text' => ''); // count the number of files in this article if ($count = Files::count_for_anchor('article:' . $item['id'], FALSE, $embedded)) { if ($count > 20) { $box['bar'] += array('_count' => sprintf(i18n::ns('%d file', '%d files', $count), $count)); } // list files by date (default) or by title (option files_by_title) $offset = ($zoom_index - 1) * FILES_PER_PAGE; if (Articles::has_option('files_by', $anchor, $item) == 'title') { $items = Files::list_by_title_for_anchor('article:' . $item['id'], 0, 300, 'article:' . $item['id'], $embedded); } else { $items = Files::list_by_date_for_anchor('article:' . $item['id'], 0, 300, 'article:' . $item['id'], $embedded); } // actually render the html if (is_array($items)) { $box['text'] .= Skin::build_list($items, 'decorated'); } elseif (is_string($items)) { $box['text'] .= $items; } // the command to post a new file if (Files::allow_creation($item, $anchor, 'article')) { Skin::define_img('FILES_UPLOAD_IMG', 'files/upload.gif'); $box['bar'] += array('files/edit.php?anchor=' . urlencode('article:' . $item['id']) => FILES_UPLOAD_IMG . i18n::s('Add a file')); } } // some files have been attached to this page if ($page == 1 && $count > 1) { // the command to download all files $link = 'files/fetch_all.php?anchor=' . urlencode('article:' . $item['id']); if ($count > 20) { $label = i18n::s('Zip 20 first files'); } else { $label = i18n::s('Zip all files'); } $box['bar'] += array($link => $label); } // there is some box content if ($box['text']) { $text .= Skin::build_content('files', i18n::s('Files'), $box['text'], $box['bar']); } // list of comments $title_label = ''; if (is_object($anchor)) { $title_label = ucfirst($overlay->get_label('list_title', 'comments')); } if (!$title_label) { $title_label = i18n::s('Comments'); } // no layout yet $layout = NULL; // label to create a comment $add_label = ''; if (is_object($overlay)) { $add_label = $overlay->get_label('new_command', 'comments'); } if (!$add_label) { $add_label = i18n::s('Post a comment'); } // get a layout from anchor $layout =& Comments::get_layout($anchor, $item); // provide author information to layout if (is_object($layout) && isset($item['create_id']) && $item['create_id']) { $layout->set_focus('user:'******'create_id']); } // the maximum number of comments per page if (is_object($layout)) { $items_per_page = $layout->items_per_page(); } else { $items_per_page = COMMENTS_PER_PAGE; } // the first comment to list $offset = 0; if (is_object($layout) && method_exists($layout, 'set_offset')) { $layout->set_offset($offset); } // build a complete box $box = array('bar' => array(), 'prefix_bar' => array(), 'text' => ''); // feed the wall if (Comments::allow_creation($item, $anchor)) { $box['text'] .= Comments::get_form('article:' . $item['id']); } // a navigation bar for these comments if ($count = Comments::count_for_anchor('article:' . $item['id'])) { if ($count > 20) { $box['bar'] += array('_count' => sprintf(i18n::ns('%d comment', '%d comments', $count), $count)); } // list comments by date $items = Comments::list_by_date_for_anchor('article:' . $item['id'], $offset, $items_per_page, $layout, TRUE); // actually render the html if (is_array($items)) { $box['text'] .= Skin::build_list($items, 'rows'); } elseif (is_string($items)) { $box['text'] .= $items; } // navigation commands for comments $prefix = Comments::get_url('article:' . $item['id'], 'navigate'); $box['bar'] = array_merge($box['bar'], Skin::navigate(NULL, $prefix, $count, $items_per_page, $zoom_index)); } // ensure that the surfer can change content if (Articles::allow_modification($item, $anchor)) { // view or modify this section $menu = array(); $box['bar'] += array(Articles::get_permalink($item) => i18n::s('View the page')); if (!is_object($overlay) || !($label = $overlay->get_label('edit_command', 'articles'))) { $label = i18n::s('Edit this page'); } $box['bar'] += array(Articles::get_url($item['id'], 'edit') => $label); } // show commands if (count($box['bar'])) { // commands before the box $box['text'] = Skin::build_list($box['prefix_bar'], 'menu_bar') . $box['text']; // append the menu bar at the end $box['text'] .= Skin::build_list($box['bar'], 'menu_bar'); } // build a box if ($box['text']) { // put a title if there are other titles or if more than 2048 chars $title = ''; if (preg_match('/(<h1|<h2|<h3|<table|\\[title|\\[subtitle)/i', $context['text'] . $text) || strlen($context['text'] . $text) > 2048) { $title = $title_label; } // insert a full box $text .= Skin::build_box($title, $box['text'], 'header1', 'comments'); } // assemble the full panel $panels[] = array('att' . $item['id'], ucfirst(Skin::strip($item['title'], 30)), 'atc' . $item['id'], $text); } // there is some box content if (trim($box['text'])) { $text .= $box['text']; } // format tabs $text = Skin::build_tabs($panels); // end of processing SQL::free($result); return $text; }
} elseif (is_string($items)) { $box['text'] .= $items; } // navigation commands for links $home = Articles::get_permalink($item); $prefix = Articles::get_url($item['id'], 'navigate', 'links'); $box['bar'] += Skin::navigate($home, $prefix, $count, LINKS_PER_PAGE, $zoom_index); // new links are allowed if ($cur_article->allows('creation', 'link')) { Skin::define_img('LINKS_ADD_IMG', 'links/add.gif'); $box['bar'] += array('links/edit.php?anchor=' . urlencode('article:' . $item['id']) => LINKS_ADD_IMG . i18n::s('Add a link')); } } // there is some box content if ($box['text']) { $canvas['links'] = Skin::build_content('links', i18n::s('Links'), $box['text'], $box['bar']); } $canvas['links_count'] = $count; } // // trailer information // // add trailer information from the overlay, if any if (is_object($overlay)) { $canvas['trailer'] .= $overlay->get_text('trailer', $item); } // add trailer information from this item, if any if (isset($item['trailer']) && trim($item['trailer'])) { $canvas['trailer'] .= Codes::beautify($item['trailer']); } // buttons to display previous and next pages, if any
$discussion_count = $count; $box['bottom'] += array('_count' => sprintf(i18n::ns('%d comment', '%d comments', $count), $count)); // list comments by date $items = Comments::list_by_date_for_anchor('article:' . $item['id'], $offset, $items_per_page, $layout, TRUE); // actually render the html if (is_array($items)) { $box['text'] .= Skin::build_list($items, 'rows'); } elseif (is_string($items)) { $box['text'] .= $items; } // navigation commands for comments $prefix = Comments::get_url('article:' . $item['id'], 'navigate'); $box['bottom'] += Skin::navigate(NULL, $prefix, $count, $items_per_page, $zoom_index, FALSE, TRUE); } // build a box $discussion .= Skin::build_content('comments', '', $box['text'], $box['top'], $box['bottom']); } // display in a separate panel if ($discussion) { $label = i18n::s('Discussion'); if ($discussion_count) { $label .= ' (' . $discussion_count . ')'; } $panels[] = array('discussion', $label, 'discussion_panel', $discussion); } // let YACS do the hard job $context['text'] .= Skin::build_tabs($panels); // // extra panel -- most content is cached, except commands specific to current surfer // // the owner profile, if any, aside