Extension:BreadCrumbs (Kimon)/el
From MediaWiki.org
|
BreadCrumbs (Kimon) Release status: beta |
|
|---|---|
| Implementation | User interface |
| Hooks used | UserToggles |
| Description | Προβάλλει τις σελίδες που επισκέφτηκε ο χρήστης και τη σειρά τους. Βασισμένο στην επέκταση Extension:BreadCrumbs του Manuel Schneider. |
| Author(s) | Κίμων Ανδρέου (Kimon talk) |
| Version | 1.0.0 (2007-10-26) |
| MediaWiki | Δοκιμασμένο στην έκδοση 1.10 |
| License | GPL |
| Download | Δείτε παρακάτω |
| Parameters | $wgBreadCrumbsDelimiter $wgBreadCrumbsCount |
[edit] Περιγραφή
Προβάλλει μια λίστα όλων των σελίδων που ο χρήστης είδε κατα την επίσκεψή του. Εξαιρετικά χρήσιμο όταν ο χρήστης θέλει να μάθει το πως "έφτασε" στη συγκεκριμένη σελίδα.
Εάν η νέα σελίδα την έχει ήδη επισκεφθεί ο χρήστης (άρα είνα ήδη στη λίστα), η λίστα δε μεγαλώνει (δε δημιουργεί διπλές εγγραφές) και αν είναι μια παλαιότερη σελίδα, τότε η λίστα συρρικνώνεται.
Επίσης, μια νέα προτίμηση χρήστη έτσι ώστε ο κάθε χρήστης να μπορεί να επιλέξει εάν θέλει να βλέπει τη λίστα ή όχι. Η νέα αυτή προτίμηση βρίσκεται στις "Διαφ. ρυθμίσεις".
Η γραμμή με τους συνδέσμους τοποθετείται στο κάτω μέρος της σελίδας αλλά όλες οι δυνατότηες μορφοποιήσης μπορούν να γίνουν μέσω του αρχείου CSS που συνοδεύει αυτή την επέκταση.
Δείτε το κάτω μέρος αυτής της σελίδας για ένα παράδειγμα
[edit] Παράμετροι
- $wgBreadCrumbsDelimiter
- Ορίζει τους χαρακτήρες που θα χρησιμοποιηθούν ως διαχωρισμός μεταξύ των συνδέσμων των σελίδων. Η αρχική τμή της μεταβλητής αυτής είναι: " > "
- $wgBreadCrumbsCount
- Ορίζει πόσες σελίδες να προβάλλει στη λίστα. Η αρχική τιμή είναι 5.
[edit] Εγκατάσταση
Ακολουθήστε τα παρακάτω βήματα για να εγκαταστήσετε την επέκταση:
1. Δημιουργείστε ένα νέο κατάλογο υπό τον κατάλογο "extensions" με το όνομα "BreadCrumbs"
2. Δημιουργείστε ένα νεο αρχείο με το όνομα "BreadCrumbs.php" πρσθέστε τον παρακάτω κώδικα:
<?php # The BreadCrumbs extension, an extension for providing an breadcrumbs # navigation to users. # @addtogroup Extensions # @author Manuel Schneider <manuel.schneider@wikimedia.ch> # @author Kimon Andreou # @copyright © 2007 by Manuel Schneider, Kimon Andreou # @licence GNU General Public Licence 2.0 or later if( !defined( 'MEDIAWIKI' ) ) { echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" ); die(); } ## Options: # set the delimiter $wgBreadCrumbsDelimiter = ' > '; # number of breadcrumbs to use $wgBreadCrumbsCount = 5; $bcBreadCrumbs = new BreadCrumbs(); $wgExtensionFunctions[] = array($bcBreadCrumbs, 'setup'); $wgHooks['UserToggles'][] = array($bcBreadCrumbs, 'toggle'); $wgExtensionCredits['parserhook'][] = array( 'name' => 'BreadCrumbs', 'author' => 'Kimon Andreou', 'url' => 'http://www.mediawiki.org/wiki/Extension:BreadCrumbs_(Kimon)', 'description' => "Shows a breadcrumb navigation. Based heavily on Manuel Shneider's extension[http://www.mediawiki.org/wiki/Extension:BreadCrumbs]" ); ## ## Main class class BreadCrumbs { #constructor function BreadCrumbs() {} ## Set Hook: function setup() { global $wgUser, $wgHooks; #can we see the breadcrumbs? if($wgUser->getOption('breadcrumb')==0) { return; } ## Showing and updating the breadcrumbs trail # Hook when viewing article header: $wgHooks['ArticleViewHeader'][] = array($this, 'show'); ## Infrastructure # Hook our own CSS: $wgHooks['OutputPageParserOutput'][] = array($this, 'output'); } #Return our new user preference (t/f toggle) function toggle(&$arr) { global $wgMessageCache; #named "breadcrumb" - original, no? $arr[] = 'breadcrumb'; $wgMessageCache->addMessage('tog-breadcrumb', 'Use breadcrumbs'); return true; } #Show the breadcrumbs on the page function show( &$m_pageObj ) { global $wgUser, $wgTitle, $wgOut, $wgBreadCrumbsDelimiter, $wgBreadCrumbsCount; # deserialize data from session into array: $m_BreadCrumbs = array(); #If a session doesn't already exist, create one if( isset( $_SESSION['BreadCrumbs'] ) ) { $m_BreadCrumbs = $_SESSION['BreadCrumbs']; } else { if( !isset( $_SESSION ) ) { session_start(); } $_SESSION['BreadCrumbs'] = array(); } # cache index of last element: $m_count = count( $m_BreadCrumbs ) - 1; # if we've got too many entries, reduce the array: if( count( $m_BreadCrumbs ) > 0 && $m_BreadCrumbs[ $m_count ] != $wgTitle->getPrefixedText() ) { # reduce the array set, remove older elements: $m_BreadCrumbs = array_slice( $m_BreadCrumbs, ( 1 - $wgBreadCrumbsCount ) ); # add new page: array_push( $m_BreadCrumbs, $wgTitle->getPrefixedText() ); } else { array_push( $m_BreadCrumbs, $wgTitle->getPrefixedText() ); } #if returning to a page we've already visited, reduce the array $loc = array_search($wgTitle->getPrefixedText(), $m_BreadCrumbs); if(($loc >= 0)) { #shrink array $m_BreadCrumbs = array_slice($m_BreadCrumbs, 0, ($loc + 1)); } # serialize data from array to session: $_SESSION['BreadCrumbs'] = $m_BreadCrumbs; # update cache: $m_count = count( $m_BreadCrumbs ) - 1; # acquire a skin object: $m_skin =& $wgUser->getSkin(); # build the breadcrumbs trail: $m_trail = "<div id=\"BreadCrumbsTrail\"> <i>Bread crumbs:</i> "; for( $i = 0; $i <= $m_count; $i++ ) { $m_trail .= $m_skin->makeLink( $m_BreadCrumbs[$i] ); if( $i < $m_count ) $m_trail .= $wgBreadCrumbsDelimiter; } $m_trail .= ' </div>'; $wgOut->addHTML( $m_trail ); # invalidate internal MediaWiki cache: $wgTitle->invalidateCache(); $wgUser->invalidateCache(); # Return true to let the rest work: return true; } ## Entry point for the hook for printing the CSS: # todo: find a better implementation function output( &$m_pageObj, &$m_parserOutput ) { global $wgScriptPath; # Register CSS file for our select box: $m_pageObj->addLink( array( 'rel' => 'stylesheet', 'type' => 'text/css', 'href' => $wgScriptPath . '/extensions/BreadCrumbs/BreadCrumbs.css' ) ); # Be nice: return true; } }
3. Δημιουργήστε ένα νέο αρχείο με το όνομα "BreadCrumbs.css" και προσθέστε το παρακάτω:
/* Stylesheet for the BreadCrumbs extension, an extension of the * edit box of MediaWiki to provide an easy way to add category links * to a specific page. * * @package MediaWiki * @subpackage Extensions * @author Manuel Schneider <manuel.schneider@wikimedia.ch> * @author Kimon Andreou * @copyright © 2007 by Manuel Schneider * @licence GNU General Public Licence 2.0 or later */ #BreadCrumbsTrail { font-size:0.8em; background-color: #FFFFCC; position:absolute; left: 2px; bottom:0; width:99%; }
4. Προσθέστε την παρακάτω γραμμή στο τέλος του αρχείου LocalSettings.php
require_once( "$IP/extensions/BreadCrumbs/BreadCrumbs.php" );

