Bumsakalaka

Joined 8 February 2022
no edit summary
 
(25 intermediate revisions by the same user not shown)
Line 1: Line 1:
<div style=float:right>__TOC__</div>Hi Carcassonne community. I'm {{Author|name=Bumsakalaka}}
I discovered Carcassonne couple years ago and during COVID quarantine I discovered a big world of {{FanExpansionsLink|text=Fan expansions}}. This totally changed my view to this game. With IT background I joined teams on Czech forum, Carcassonne Central, JCloisterZone and finally WikiCarpedia.
My idea is to choose best fan expansions and update rules for them to allow to play it with other official and also fan expansions. This is not so easy tasks, because some of authors are not active these days. But community which knows official rules and common rules principles helped me and others to make rules consistent and create nice example pictures how it can be played.
Wen you are interested on fan expansions then check:
* '''{{FanExpansionsLink}}''' - processed fan expansions with solved interactions with other expansions
* '''[[:Expansion_List_-_Selector|Expansion List Selector]]''' - full list of known expansions including 1399 records (in 3rd January 2024).
== Translations help to Slovak language ==
== Translations help to Slovak language ==


Quick links
Quick links
* [[:Talk:Fan_Expansions]]
* Fan Expansions
* [[:MediaWiki:ExpansionData.js]]
** [[User:Bumsakalaka/Page template - Fan Expansion]]
* [[:MediaWiki:ExpansionSelector.js]]
** [[:Talk:Fan_Expansions]]
* [[:MediaWiki:ExpansionSelector.css]]
** [[User:Bumsakalaka/FFOOP]]
* [[:Expansion_Selector_Labels]]
** [[User:Bumsakalaka/JCloisterZoneLocale]]
* [[Special:ImportTranslations]]
** [[User:Bumsakalaka/Cliffs_and_Waterfalls]]
* [[User:Bumsakalaka/JCloisterZoneLocale]]
** [[User:Bumsakalaka/NKO]] New King's Orders
* [[User:Bumsakalaka/Cliffs_and_Waterfalls]]
** [[User:Bumsakalaka/WP]] Wandering Preachers
* [[User:Bumsakalaka/NKO]]
** [[User:Bumsakalaka/Gambler%27s_Luck_(Fan_Expansion)]] The Pope of Avignon
* [[User:Bumsakalaka/WP]]
** [[User:Bumsakalaka/ČV]] Czech Flag
* [[User:Bumsakalaka/Gambler%27s_Luck_(Fan_Expansion)]]
** [[User:Bumsakalaka/HA]] Halfling Abbey
* [[User:Bumsakalaka/Page template - Fan Expansion]]
** [[User:Bumsakalaka/JS]] JPutt's Seasons
* action=purge to delete page cache
** <del>[[User:Bumsakalaka/ĎČ]]</del>
 
* Expansion Selector
** [[:MediaWiki:ExpansionData.js]]
** [[:MediaWiki:ExpansionSelector.js]]
** [[:MediaWiki:ExpansionSelector.css]]
** [[:Carcassonne_Order_of_Play]]
** [[:Expansion_Selector_Labels]]
 
* MediaWiki Pages
** [[Special:ImportTranslations]]
** action=purge to delete page cache
** [[:MediaWiki:Group-user.css]]
** [[:MediaWiki:Common.css]]


=== Features & Roles / Územia a role ===
=== Features & Roles / Územia a role ===
Line 182: Line 205:
! Template || Expansion EN C1 || Rozšírenie SK C1 || Expansion EN C2 || Rozšírenie SK C2
! Template || Expansion EN C1 || Rozšírenie SK C1 || Expansion EN C2 || Rozšírenie SK C2
|-
|-
| <nowiki>{{BaseGameLink}}</nowiki> [[Template:BaseGameLink|edit]] || {{BaseGameLink/en|version=C1}} || {{BaseGameLink/sk|version=C1}} || {{BaseGameLink/en}} || {{BaseGameLink/sk}}
| <nowiki>{{BaseGameLink}}</nowiki> [[Template:BaseGameLink|edit]] || {{BaseGameLink/en|edition=C1}} || {{BaseGameLink/sk|edition=C1}} || {{BaseGameLink/en}} || {{BaseGameLink/sk}}
|-
|-
| <nowiki>{{FarmersLink}}</nowiki> [[Template:FarmersLink|edit]] || - || - || {{FarmersLink/en}} || {{FarmersLink/sk}}
| <nowiki>{{FarmersLink}}</nowiki> [[Template:FarmersLink|edit]] || - || - || {{FarmersLink/en}} || {{FarmersLink/sk}}
|-
|-
| <nowiki>{{RiverLink}}</nowiki> [[Template:RiverLink|edit]] || {{RiverLink/en|version=C1}} || {{RiverLink/sk|version=C1}} || {{RiverLink/en}} || {{RiverLink/sk}}
| <nowiki>{{RiverLink}}</nowiki> [[Template:RiverLink|edit]] || {{RiverLink/en|edition=C1}} || {{RiverLink/sk|edition=C1}} || {{RiverLink/en}} || {{RiverLink/sk}}
|-
|-
| <nowiki>{{AbbotLink}}</nowiki>  [[Template:AbbotLink|edit]] || - || - || {{AbbotLink/en}} || {{AbbotLink/sk}}
| <nowiki>{{AbbotLink}}</nowiki>  [[Template:AbbotLink|edit]] || - || - || {{AbbotLink/en}} || {{AbbotLink/sk}}
Line 192: Line 215:
! colspan="5" | '''Standalone playable expansions'''
! colspan="5" | '''Standalone playable expansions'''
|-
|-
| <nowiki>{{WheelFortuneLink}}</nowiki> [[Template:WheelFortuneLink|edit]] || {{WheelFortuneLink/en|version=C1}} || {{WheelFortuneLink/sk|version=C1}} || - || -
| <nowiki>{{WheelFortuneLink}}</nowiki> [[Template:WheelFortuneLink|edit]] || {{WheelFortuneLink/en|edition=C1}} || {{WheelFortuneLink/sk|edition=C1}} || - || -
|-
|-
| <nowiki>{{MistsOverCarcassonneLink}}</nowiki> [[Template:MistsOverCarcassonneLink|edit]]|| - || - || {{MistsOverCarcassonneLink/en|}} || {{MistsOverCarcassonneLink/sk|}}
| <nowiki>{{MistsOverCarcassonneLink}}</nowiki> [[Template:MistsOverCarcassonneLink|edit]]|| - || - || {{MistsOverCarcassonneLink/en|}} || {{MistsOverCarcassonneLink/sk|}}
Line 198: Line 221:
! colspan="5" | '''Large Expansions''' (expansion number order)
! colspan="5" | '''Large Expansions''' (expansion number order)
|-
|-
| <nowiki>{{InnsCathedralsLink}}</nowiki> [[Template:InnsCathedralsLink|edit]]|| {{InnsCathedralsLink/en|version=C1}} || {{InnsCathedralsLink/sk|version=C1}} || {{InnsCathedralsLink/en|}} || {{InnsCathedralsLink/sk|}}
| <nowiki>{{InnsCathedralsLink}}</nowiki> [[Template:InnsCathedralsLink|edit]]|| {{InnsCathedralsLink/en|edition=C1}} || {{InnsCathedralsLink/sk|edition=C1}} || {{InnsCathedralsLink/en|}} || {{InnsCathedralsLink/sk|}}
|-
|-
| <nowiki>{{TradersBuildersLink}}</nowiki> [[Template:TradersBuildersLink|edit]]|| {{TradersBuildersLink/en|version=C1}} || {{TradersBuildersLink/sk|version=C1}} || {{TradersBuildersLink/en|}} || {{TradersBuildersLink/sk|}}
| <nowiki>{{TradersBuildersLink}}</nowiki> [[Template:TradersBuildersLink|edit]]|| {{TradersBuildersLink/en|edition=C1}} || {{TradersBuildersLink/sk|edition=C1}} || {{TradersBuildersLink/en|}} || {{TradersBuildersLink/sk|}}
|-
|-
| <nowiki>{{PrincessDragonLink}}</nowiki> [[Template:PrincessDragonLink|edit]]|| {{PrincessDragonLink/en|version=C1}} || {{PrincessDragonLink/sk|version=C1}} || {{PrincessDragonLink/en|}} || {{PrincessDragonLink/sk|}}
| <nowiki>{{PrincessDragonLink}}</nowiki> [[Template:PrincessDragonLink|edit]]|| {{PrincessDragonLink/en|edition=C1}} || {{PrincessDragonLink/sk|edition=C1}} || {{PrincessDragonLink/en|}} || {{PrincessDragonLink/sk|}}
|-
|-
| <nowiki>{{TowerLink}}</nowiki> [[Template:TowerLink|edit]]|| {{TowerLink/en|version=C1}} || {{TowerLink/sk|version=C1}} || {{TowerLink/en|}} || {{TowerLink/sk|}}
| <nowiki>{{TowerLink}}</nowiki> [[Template:TowerLink|edit]]|| {{TowerLink/en|edition=C1}} || {{TowerLink/sk|edition=C1}} || {{TowerLink/en|}} || {{TowerLink/sk|}}
|-
|-
| <nowiki>{{AbbeyMayorLink}}</nowiki> [[Template:AbbeyMayorLink|edit]]|| {{AbbeyMayorLink/en|version=C1}} || {{AbbeyMayorLink/sk|version=C1}} || {{AbbeyMayorLink/en|}} || {{AbbeyMayorLink/sk|}}
| <nowiki>{{AbbeyMayorLink}}</nowiki> [[Template:AbbeyMayorLink|edit]]|| {{AbbeyMayorLink/en|edition=C1}} || {{AbbeyMayorLink/sk|edition=C1}} || {{AbbeyMayorLink/en|}} || {{AbbeyMayorLink/sk|}}
|-
|-
| <nowiki>{{CountKingRobberLink}}</nowiki> [[Template:CountKingRobberLink|edit]]|| {{CountKingRobberLink/en|version=C1}} || {{CountKingRobberLink/sk|version=C1}} || {{CountKingRobberLink/en}} || {{CountKingRobberLink/sk}}
| <nowiki>{{CountKingRobberLink}}</nowiki> [[Template:CountKingRobberLink|edit]]|| {{CountKingRobberLink/en|edition=C1}} || {{CountKingRobberLink/sk|edition=C1}} || {{CountKingRobberLink/en}} || {{CountKingRobberLink/sk}}
|-
|-
| <nowiki>{{BridgesCastlesBazaarsLink}}</nowiki> [[Template:BridgesCastlesBazaarsLink|edit]]|| {{BridgesCastlesBazaarsLink/en|version=C1}} || {{BridgesCastlesBazaarsLink/sk|version=C1}} || {{BridgesCastlesBazaarsLink/en}} || {{BridgesCastlesBazaarsLink/sk}}
| <nowiki>{{BridgesCastlesBazaarsLink}}</nowiki> [[Template:BridgesCastlesBazaarsLink|edit]]|| {{BridgesCastlesBazaarsLink/en|edition=C1}} || {{BridgesCastlesBazaarsLink/sk|edition=C1}} || {{BridgesCastlesBazaarsLink/en}} || {{BridgesCastlesBazaarsLink/sk}}
|-
|-
| <nowiki>{{HillsSheepLink}}</nowiki> [[Template:HillsSheepLink|edit]]|| {{HillsSheepLink/en|version=C1}} || {{HillsSheepLink/sk|version=C1}} || {{HillsSheepLink/en}} || {{HillsSheepLink/sk}}
| <nowiki>{{HillsSheepLink}}</nowiki> [[Template:HillsSheepLink|edit]]|| {{HillsSheepLink/en|edition=C1}} || {{HillsSheepLink/sk|edition=C1}} || {{HillsSheepLink/en}} || {{HillsSheepLink/sk}}
|-
|-
| <nowiki>{{UnderBigTopLink}}</nowiki> [[Template:UnderBigTopLink|edit]]|| - || - || {{UnderBigTopLink/en}} || {{UnderBigTopLink/sk}}
| <nowiki>{{UnderBigTopLink}}</nowiki> [[Template:UnderBigTopLink|edit]]|| - || - || {{UnderBigTopLink/en}} || {{UnderBigTopLink/sk}}
Line 220: Line 243:
| <nowiki>{{BesiegersLink}}</nowiki> [[Template:BesiegersLink|edit]]|| {{BesiegersLink/en}} || {{BesiegersLink/sk}} || - || -
| <nowiki>{{BesiegersLink}}</nowiki> [[Template:BesiegersLink|edit]]|| {{BesiegersLink/en}} || {{BesiegersLink/sk}} || - || -
|-
|-
| <nowiki>{{BesiegersLink|variant=Besiegers}}</nowiki> [[Template:BesiegersLink|edit]]|| {{BesiegersLink/en|variant=Besiegers}} || {{BesiegersLink/sk|variant=Besiegers}} || - || -
| <nowiki>{{CatharsLink}}</nowiki> [[Template:CatharsLink|edit]]|| {{CatharsLink/en}} || {{CatharsLink/sk}} || - || -
|-
|-
| <nowiki>{{BesiegersLink|variant=Cathars}}</nowiki> [[Template:BesiegersLink|edit]]|| {{BesiegersLink/en|variant=Cathars}} || {{BesiegersLink/sk|variant=Cathars}} || - || -
| <nowiki>{{SiegeLink}}</nowiki> [[Template:SiegeLink|edit]]|| {{SiegeLink/en}} || {{SiegeLink/sk}} || - || -
|-
|-
| <nowiki>{{BesiegersLink|variant=Siege}}</nowiki> [[Template:BesiegersLink|edit]]|| {{BesiegersLink/en|variant=Siege}} || {{BesiegersLink/sk|variant=Siege}} || - || -
| <nowiki>{{LabyrinthLink}}</nowiki> [[Template:LabyrinthLink|edit]]|| - || - || {{LabyrinthLink/en}} || {{LabyrinthLink/sk}}
|-
|-
| <nowiki>{{LabyrinthsLink}}</nowiki> [[Template:LabyrinthsLink|edit]]|| - || - || {{LabyrinthsLink/en}} || {{LabyrinthsLink/sk}}
| <nowiki>{{RiverLink}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|edition=C1}} || {{RiverLink/sk|edition=C1}} || {{RiverLink/en}} || {{RiverLink/sk}}
|-
|-
| <nowiki>{{RiverLink}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|version=C1}} || {{RiverLink/sk|version=C1}} || {{RiverLink/en}} || {{RiverLink/sk}}
| <nowiki>{{RiverLink|variant=I}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|variant=I|edition=C1}} || {{RiverLink/sk|variant=I|edition=C1}} || {{RiverLink/en|variant=I}} || {{RiverLink/sk|variant=I}}
|-
|-
| <nowiki>{{RiverLink|variant=I}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|variant=I|version=C1}} || {{RiverLink/sk|variant=I|version=C1}} || {{RiverLink/en|variant=I}} || {{RiverLink/sk|variant=I}}
| <nowiki>{{RiverLink|variant=II}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|variant=II|edition=C1}} || {{RiverLink/sk|variant=II|edition=C1}} || {{RiverLink/en|variant=II}} || {{RiverLink/sk|variant=II}}
|-
|-
| <nowiki>{{RiverLink|variant=II}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|variant=II|version=C1}} || {{RiverLink/sk|variant=II|version=C1}} || {{RiverLink/en|variant=II}} || {{RiverLink/sk|variant=II}}
| <nowiki>{{RiverLink|variant=III}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|variant=III|edition=C1}} || {{RiverLink/sk|variant=III|edition=C1}} || - || -
|-
| <nowiki>{{RiverLink|variant=III}}</nowiki> [[Template:RiverLink|edit]]|| {{RiverLink/en|variant=III|version=C1}} || {{RiverLink/sk|variant=III|version=C1}} || - || -
|-
|-
| <nowiki>{{RiverLink|variant=20}}</nowiki> [[Template:RiverLink|edit]]|| - || - || {{RiverLink/en|variant=20}} || {{RiverLink/sk|variant=20}}
| <nowiki>{{RiverLink|variant=20}}</nowiki> [[Template:RiverLink|edit]]|| - || - || {{RiverLink/en|variant=20}} || {{RiverLink/sk|variant=20}}
Line 268: Line 289:
| <nowiki>{{CastleLordsLink}}</nowiki> [[Template:CastleLordsLink|edit]]|| {{CastleLordsLink/en}} || {{CastleLordsLink/sk}} || ||
| <nowiki>{{CastleLordsLink}}</nowiki> [[Template:CastleLordsLink|edit]]|| {{CastleLordsLink/en}} || {{CastleLordsLink/sk}} || ||
|-
|-
| <nowiki>{{PorxadaLink}}</nowiki> [[Template:PorxadaLink|edit]]|| {{PorxadaLink/en|version=C1}} || {{PorxadaLink/sk|version=C1}} || ||
| <nowiki>{{PorxadaLink}}</nowiki> [[Template:PorxadaLink|edit]]|| {{PorxadaLink/en|edition=C1}} || {{PorxadaLink/sk|edition=C1}} || ||
|-
|-
| <nowiki>{{RobbersSonLink}}</nowiki> [[Template:RobbersSonLink|edit]] || {{RobbersSonLink/en}} || {{RobbersSonLink/sk}} || {{RobbersSonLink/en}} || {{RobbersSonLink/sk}}
| <nowiki>{{RobbersSonLink}}</nowiki> [[Template:RobbersSonLink|edit]] || {{RobbersSonLink/en}} || {{RobbersSonLink/sk}} || {{RobbersSonLink/en}} || {{RobbersSonLink/sk}}
|-
|-
| <nowiki>{{WellsLink}}</nowiki> [[Template:WellsLink|edit]]|| {{WellsLink/en}} || {{WellsLink/sk}} || |-
| <nowiki>{{WellsLink}}</nowiki> [[Template:WellsLink|edit]]|| {{WellsLink/en}} || {{WellsLink/sk}} || {{WellsLink/en}} || {{WellsLink/sk}}
|-
|}
|}


Line 320: Line 342:
|-
|-
| Collapsible content || [https://www.mediawiki.org/wiki/Manual:Collapsible_elements Manual:Collapsible_elements]
| Collapsible content || [https://www.mediawiki.org/wiki/Manual:Collapsible_elements Manual:Collapsible_elements]
|-
| Grammar forms of words for translators || [https://www.mediawiki.org/wiki/Manual:$wgGrammarForms Manual:$wgGrammarForms]
|}
|}


Line 623: Line 647:
</div>
</div>


== Multiple features template ==
== Multiple features template prototype ==


<div style="display:inline-block; position:relative;">
<div style="display:inline-block; position:relative;">
Line 633: Line 657:
   </div>
   </div>
</div>
</div>
== SVG Image test ==
[[File:Symbol Black Dragon.svg|thumb]]
== Ideas for MediaWiki extensions ==
=== Automatic purge page after mark for translations ===
* Automatic purge page after mark for translations - this will speed up distribution of changes of translated page, specially for templates
<pre style="margin-left:5ex;text-decoration:line-through;"><nowiki>https://www.mediawiki.org/wiki/Manual:Pywikibot/touch.py
[telegram] <jhsoby>
[telegram] <jhsoby> `python3 pwb.py touch -transcludes:"your template's name"
</nowiki></pre>
** Check also proper settings of [[https://www.mediawiki.org/wiki/Manual:Job_queue Manual:Job_queue]]
=== Developer Search ===
* Search over source codes like [[Special:ReplaceText]] but without possibility of accidentally replacing text.
=== Mobile depends parsing, which stores two version of same page. One for mobile devices and one for desktops. It allows to change styles etc. directly in Templates and in content ===
* <del>Styles for mobile view like <code>data-mobile-style="blah blah"</code> which will be used on mobile view and will rewrite <code>style</code> if any</del>
* <del>Find a way how to generate mobile device cache and desktop device cache file and provide it be template
** <div>Example for show different cache for mobile and desktop by MobileDetect extention
<pre style="margin-left:5ex;text-decoration:line-through;"><nowiki>$mobile = wfMobileDetect();
$cacheKey = $title->getPrefixedDBkey();
if ($mobile) {
    $cacheKey .= '-mobile';
} else {
    $cacheKey .= '-desktop';
}
$page = $cache->get($cacheKey);
if (!$page) {
    // Generate the page and store it in the cache
    $page = generatePage($title);
    $cache->set($cacheKey, $page);
}
// Output the page
echo $page;</nowiki></pre></div></del>
** <del><div>Example by MobileContext extension which is part of MediaWiki
<pre style="margin-left:5ex;text-decoration:line-through;"><nowiki>$context = MobileContext::singleton();
$isMobile = $context->shouldDisplayMobileView();
if ($isMobile) {
    // Code for mobile devices
} else {
    // Code for non-mobile devices
}
</nowiki></pre></div></del>
** <del><div>New parser function which test if current user is mobile device or not usage <code><nowiki>{{#ifmobile:stuff for mobiles|stuff for destop}}</nowiki></code>
<pre style="margin-left:5ex;text-decoration:line-through;"><nowiki> $parser->setFunctionHook( 'ifmobile', static function ( Parser $parser, $mobile_input = '', $nomobile_input = '' ) {
if ( wfMobileDetect() ) {
return $parser->recursiveTagParse( $mobile_input );
} else {
return $parser->recursiveTagParse( $mobile_input );
}
} );
</nowiki></pre></div></del>
** <del><p>Delete cache for both page $title = /* the title of the page to purge */;
<pre style="margin-left:5ex;text-decoration:line-through;"><nowiki>
$cacheKeyDesktop = $title->getPrefixedDBkey() . '-desktop';
$cacheKeyMobile = $title->getPrefixedDBkey() . '-mobile';
$cache->delete($cacheKeyDesktop);
$cache->delete($cacheKeyMobile);</nowiki></pre></p></del>
** <del><p>Call public <code><nowiki>static function onArticlePurge( &$article ) { ... }</nowiki></code>
<pre style="margin-left:5ex;text-decoration:line-through;"><nowiki>
extension.json
{
  "Hooks": {
    "ArticlePurge": "MediaWiki\\Extension\\MyExtension\\Hooks::onArticlePurge"
  }
}
extenstion file
namespace MediaWiki\Extension\MyExtension;
class Hooks {
    public static function onArticlePurge( $wikiPage ) {
        $title = $wikiPage->getTitle();
        $cache = \MediaWiki\MediaWikiServices::getInstance()->getMainWANObjectCache();
        // Get the cache keys for mobile and desktop versions
        $cacheKeyDesktop = $cache->makeKey( 'page', $title->getPrefixedDBkey(), 'desktop' );
        $cacheKeyMobile = $cache->makeKey( 'page', $title->getPrefixedDBkey(), 'mobile' );
        // Delete both caches
        $cache->delete( $cacheKeyDesktop );
        $cache->delete( $cacheKeyMobile );
        return true;
    }
}</nowiki></pre>
</p></del>
** <del>Another solution CustomCacheKey,but it looks like not used that $thatus->value['cacheKey'] value when reading the cache, need to be tests. If this is working, this will be best solution.
<pre style="margin-left:5ex;text-decoration:line-through;"><nowiki><?php
extensions/CustomCacheKey/CustomCacheKey.php
class CustomCacheKey {
    public static function onPageContentSaveComplete($wikiPage, $user, $content, $summary, $isMinor, $isWatch, $section, $flags, $revision, $status) {
        // Your custom logic here
        // Modify the cache key based on the page content, user, or other factors
        $cacheKey = $wikiPage->getTitle()->getPrefixedDBkey();
        if (wfMobileDetect()) {
            $cacheKey .= '_mobile'; // Add your custom suffix
        }
        // Set the modified cache key
        $status->value['cacheKey'] = $cacheKey;
    }
}
extension.json
{
    "Hooks": {
        "PageContentSaveComplete": "CustomCacheKey::onPageContentSaveComplete"
    }
}
</nowiki></pre></del>
* '''Final solution IfMobile extension. Which is total easy.'''
advancededitor, translator, writer
26,447

edits