https://bugzilla.wikimedia.org/show_bug.cgi?id=43313
Web browser: ---
Bug ID: 43313
Summary: Crumbs contain (disambiguation) in names which
duplicates locations already in breadcrumb path
Product: MediaWiki extensions
Version: master
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: Unprioritized
Component: GeoCrumbs
Assignee: [email protected]
Reporter: [email protected]
Classification: Unclassified
Mobile Platform: ---
Moving this issue from [[voy:Wikivoyage talk:Breadcrumb navigation#Remove
parenthesis at display]]...
In [[voy:Hamilton (Ohio)]], the GeoCrumb trail looks like:
North America > United States of America > Midwest (United States of America) >
Ohio > Southwest Ohio > Butler County (Ohio) > Hamilton (Ohio)
This is redundantly redundant; the same path could be expressed succinctly as:
North America > United States of America > Midwest > Ohio > Southwest Ohio >
Butler County > Hamilton
We already _know_ this is in Ohio because " > Ohio > " is in the trail, so any
" (Ohio)" disambiguators in the town and county names can be hidden from the
user without losing anything useful.
The breadcrumb trail is generated in GeoCrumbs.class.php in function
makeTrail().
Adding code to this function to keep a $nameStack of place names already in the
path and then hiding these where they appear in (brackets) elsewhere in the
same trail would give:
public function makeTrail( Title $title ) {
$breadcrumbs = array();
// avoid cyclic trails & define emergency break
$nameStack = array();
$idStack = array();
$cnt = 20;
while ( $title && $cnt-- ) {
$link = Linker::link( $title, $title->getSubpageText()
);
// mark redirects with italics.
if ( $title->isRedirect() ) {
$link = Html::rawElement( 'i', array(), $link
);
}
array_unshift( $breadcrumbs, $link );
if ( in_array( $title->getArticleID(), $idStack ) ) {
$breadcrumbs[0] = Html::rawElement( 'strike',
array(), $breadcrumbs[0] );
break;
}
$nameStack[] = $title->getText();
$idStack[] = $title->getArticleID();
$title = $this->getParentRegion( $title );
}
// hide (disambiguator) in displayed titles if already in path
foreach ($nameStack as $bname) {
foreach ($breadcrumbs as &$crumb)
$crumb = str_replace(" (" . $bname .
")</a>","</a>",$crumb);
}
return $breadcrumbs;
}
--
You are receiving this mail because:
You are the assignee for the bug.
You are watching all bug changes.
_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l