Extension talk:DynamicPageList/de
Latest comment: 14 years ago by 89.217.82.113 in topic Cutting
The following discussion has been transferred from Meta-Wiki.
Any user names refer to users of that site, who are not necessarily users of MediaWiki.org (even if they share the same username).
Any user names refer to users of that site, who are not necessarily users of MediaWiki.org (even if they share the same username).
Moin!
Ich betreibe die MediaWiki-Version: 1.5.7.
Die DynamicPageList2 hat bei mir einen Fehler ausgeworfen.
Deshalb habe ich diese ("alte") DynamicPageList für mich geringfügig erweitert:
- Caching ausgeschaltet
- Sortierung nach Titel
- Neuer Parameterwert:
ordermethod=title
- Neuer Parameterwert:
- Zusatz des Datums der letzten Änderung (hinten dran in Klammern)
- Neuer Parameter:
addpagetoucheddate=true|false (default=false)
- Neuer Parameter:
--Nicolas 18:30, 3 May 2006 (UTC)
- Die Änderungen / Ergänzungen sind hier grün hinterlegt
function DynamicPageList( $input ) { global $wgUser; global $wgLang; global $wgContLang; global $wgDLPminCategories, $wgDLPmaxCategories,$wgDLPMinResultCount, $wgDLPMaxResultCount; global $wgDLPAllowUnlimitedResults, $wgDLPAllowUnlimitedCategories; $aParams = array(); $bCountSet = false; $sStartList = '<ul>'; $sEndList = '</ul>'; $sStartItem = '<li>'; $sEndItem = '</li>'; $sOrderMethod = 'categoryadd'; $sOrder = 'descending'; $sRedirects = 'exclude'; $bNamespace = false; $iNamespace = 0; $bSuppressErrors = false; $bShowNamespace = true; $bAddFirstCategoryDate = false; $bAddPageTouchedDate = false; $aCategories = array(); $aExcludeCategories = array(); $aParams = explode("\n", $input); $parser = new Parser(); // INVALIDATE CACHE $parser->disableCache(); foreach($aParams as $sParam) { $aParam = explode("=", $sParam); if( count( $aParam ) < 2 ) continue; $sType = trim($aParam[0]); $sArg = trim($aParam[1]); if ($sType == 'category') { $title = Title::newFromText( $parser->transformMsg($sArg, null) ); if( is_null( $title ) ) continue; $aCategories[] = $title; } else if ($sType == 'notcategory') { $title = Title::newFromText( $parser->transformMsg($sArg, null) ); if( is_null( $title ) ) continue; $aExcludeCategories[] = $title; } else if ('namespace' == $sType) { $ns = $wgContLang->getNsIndex($sArg); if (NULL != $ns) { $iNamespace = $ns; $bNamespace = true; } else { $iNamespace = intval($sArg); if ($iNamespace >= 0) { $bNamespace = true; } else { $bNamespace = false; } } } else if ('count' == $sType) { //ensure that $iCount is a number; $iCount = IntVal( $sArg ); $bCountSet = true; } else if ('mode' == $sType) { switch ($sArg) { case 'none': $sStartList = ''; $sEndList = ''; $sStartItem = ''; $sEndItem = '<br/>'; break; case 'ordered': $sStartList = '<ol>'; $sEndList = '</ol>'; $sStartItem = '<li>'; $sEndItem = '</li>'; break; case 'unordered': default: $sStartList = '<ul>'; $sEndList = '</ul>'; $sStartItem = '<li>'; $sEndItem = '</li>'; break; } } else if ('order' == $sType) { switch ($sArg) { case 'ascending': $sOrder = 'ascending'; break; case 'descending': default: $sOrder = 'descending'; break; } } else if ('ordermethod' == $sType) { switch ($sArg) { case 'title': $sOrderMethod = 'title'; break; case 'lastedit': $sOrderMethod = 'lastedit'; break; case 'categoryadd': default: $sOrderMethod = 'categoryadd'; break; } } else if ('redirects' == $sType) { switch ($sArg) { case 'include': $sRedirects = 'include'; break; case 'only': $sRedirects = 'only'; break; case 'exclude': default: $sRedirects = 'exclude'; break; } } else if ('suppresserrors' == $sType) { if ('true' == $sArg) $bSuppressErrors = true; else $bSuppressErrors = false; } else if ('addfirstcategorydate' == $sType) { if ('true' == $sArg) $bAddFirstCategoryDate = true; else $bAddFirstCategoryDate = false; } else if ('addpagetoucheddate' == $sType) { if ('true' == $sArg) $bAddPageTouchedDate = true; else $bAddPageTouchedDate = false; } else if ('shownamespace' == $sType) { if ('false' == $sArg) $bShowNamespace = false; else $bShowNamespace = true; } } $iCatCount = count($aCategories); $iExcludeCatCount = count($aExcludeCategories); $iTotalCatCount = $iCatCount + $iExcludeCatCount; if ($iCatCount < 1 && false == $bNamespace) { if (false == $bSuppressErrors) return htmlspecialchars( wfMsg( 'dynamicpagelist_noincludecats' ) ); // "!!no included categories!!"; else return ''; } if ($iTotalCatCount < $wgDLPminCategories) { if (false == $bSuppressErrors) return htmlspecialchars( wfMsg( 'dynamicpagelist_toofewcats' ) ); // "!!too few categories!!"; else return ''; } if ( $iTotalCatCount > $wgDLPmaxCategories && !$wgDLPAllowUnlimitedCategories ) { if (false == $bSuppressErrors) return htmlspecialchars( wfMsg( 'dynamicpagelist_toomanycats' ) ); // "!!too many categories!!"; else return ''; } if ($bCountSet) { if ($iCount < $wgDLPMinResultCount) $iCount = $wgDLPMinResultCount; if ($iCount > $wgDLPMaxResultCount) $iCount = $wgDLPMaxResultCount; } else { if (!$wgDLPAllowUnlimitedResults) { $iCount = $wgDLPMaxResultCount; $bCountSet = true; } } //disallow showing date if the query doesn't have an inclusion category parameter if ($iCatCount < 1) $bAddFirstCategoryDate = false; //build the SQL query $dbr =& wfGetDB( DB_SLAVE ); $sPageTable = $dbr->tableName( 'page' ); $categorylinks = $dbr->tableName( 'categorylinks' ); // Original SQL: // $sSqlSelectFrom = "SELECT page_namespace, page_title, c1.cl_timestamp FROM $sPageTable"; $sSqlSelectFrom = "SELECT page_namespace, page_title, c1.cl_timestamp, page_touched FROM $sPageTable"; if (true == $bNamespace) $sSqlWhere = ' WHERE page_namespace='.$iNamespace.' '; else $sSqlWhere = ' WHERE 1=1 '; switch ($sRedirects) { case 'only': $sSqlWhere .= ' AND page_is_redirect = 1 '; break; case 'exclude': $sSqlWhere .= ' AND page_is_redirect = 0 '; break; } $iCurrentTableNumber = 0; for ($i = 0; $i < $iCatCount; $i++) { $sSqlSelectFrom .= " INNER JOIN $categorylinks AS c" . ($iCurrentTableNumber+1); $sSqlSelectFrom .= ' ON page_id = c'.($iCurrentTableNumber+1).'.cl_from'; $sSqlSelectFrom .= ' AND c'.($iCurrentTableNumber+1).'.cl_to='. $dbr->addQuotes( $aCategories[$i]->getDbKey() ); $iCurrentTableNumber++; } for ($i = 0; $i < $iExcludeCatCount; $i++) { $sSqlSelectFrom .= " LEFT OUTER JOIN $categorylinks AS c" . ($iCurrentTableNumber+1); $sSqlSelectFrom .= ' ON page_id = c'.($iCurrentTableNumber+1).'.cl_from'; $sSqlSelectFrom .= ' AND c'.($iCurrentTableNumber+1).'.cl_to='. $dbr->addQuotes( $aExcludeCategories[$i]->getDbKey() ); $sSqlWhere .= ' AND c'.($iCurrentTableNumber+1).'.cl_to IS NULL'; $iCurrentTableNumber++; } switch ($sOrderMethod) { case 'lastedit': $sSqlWhere .= ' ORDER BY page_touched '; break; case 'title': $sSqlWhere .= ' ORDER BY page_title '; break; case 'categoryadd': $sSqlWhere .= ' ORDER BY c1.cl_timestamp '; break; } /* Original was: if ('lastedit' == $sOrderMethod) $sSqlWhere .= ' ORDER BY page_touched '; else $sSqlWhere .= ' ORDER BY c1.cl_timestamp '; */ if ('descending' == $sOrder) $sSqlOrder = 'DESC'; else $sSqlOrder = 'ASC'; $sSqlWhere .= $sSqlOrder; if ($bCountSet) { $sSqlWhere .= ' LIMIT ' . $iCount; } //DEBUG: output SQL query //$output .= 'QUERY: [' . $sSqlSelectFrom . $sSqlWhere . "]<br />"; // process the query $res = $dbr->query($sSqlSelectFrom . $sSqlWhere); $sk =& $wgUser->getSkin(); if ($dbr->numRows( $res ) == 0) { if (false == $bSuppressErrors) return htmlspecialchars( wfMsg( 'dynamicpagelist_noresults' ) ); else return ''; } //start unordered list $output .= $sStartList . "\n"; //process results of query, outputing equivalent of <li>[[Article]]</li> for each result, //or something similar if the list uses other startlist/endlist while ($row = $dbr->fetchObject( $res ) ) { $title = Title::makeTitle( $row->page_namespace, $row->page_title); $output .= $sStartItem; if (true == $bAddFirstCategoryDate) $output .= $wgLang->date($row->cl_timestamp) . ': '; if (true == $bShowNamespace) $output .= $sk->makeKnownLinkObj($title); else $output .= $sk->makeKnownLinkObj($title, htmlspecialchars($title->getText())); if (true == $bAddPageTouchedDate) $output .= ' (' . $wgLang->date($row->page_touched) . ')'; $output .= $sEndItem . "\n"; }
End of content from meta.wikimedia.org.
Note that the above conversation may have been edited or added to since the transfer. If in doubt, check the edit history.
Note that the above conversation may have been edited or added to since the transfer. If in doubt, check the edit history.
Hallo,
wo kann man denn Hilfe zum Einbinden der Extension finden? Denn wenn ich in meiner LocalSettings die Zeile include("extensions/DynamicPageList/DynamicPageList.php");
einfüge, erhalte ich nur eine weiße Seite und das Wiki ist dann leider nicht mehr da.
Cutting
editHow can i change the cutmethod of the dpl-generated list? Usually it's list by "*", but i prefer this: · --89.217.82.113 16:52, 21 November 2010 (UTC)