Tools

Pm Wiki

See also Wikis in general

pump-up your Wiki-Fu !

From personal use (thus generally Own Wikis Network)

  • add an icon to every link of the intermap with $IMapLinkFmt , cf PmWiki:LinkVariables
    • $IMapLinkFmt['Wikipedia:'] = "<a class='wikipedialink urllink' href='\$LinkUrl'>\$LinkText<img src=\"http://upload.wikimedia.org/wikipedia/commons/f/f1/Wikipedia-logo_kucuk.png\" border=\"0\" /></a>";
  • backlink(s) to a page
    • (:pagelist link=ReadingNotes.InformationRules:)
    • [[Path:?action=search&q=link=ReadingNotes.InformationRules|wiki (:pagelist link=ReadingNotes.InformationRules fmt=count:) pages linking to notes on the book]]
  • search redirection
  • page counts
    • [[Site/AllRecentChanges|(:pagelist group=-PmWiki*,-Site fmt=count:) pages]]
  • PmWiki:Categories
  • PmWiki:Uploads
    • PmWiki:UploadsAdmin to enable it
      • don't forget URL rewriting (could have to add a specific /uploads/ line)
  • Cookbook:SpeedOptimizations
  • Cookbook:Stopwatch
  • RSS feed on every single page of the wiki
    • add <link rel="alternate" type="application/rss+xml" title="RSS" href="{$PageUrl}&action=pagefeed&minor=0" /> to the header of the skin.tmpl
    • http://www.w3.org/QA/Tips/use-links
  • PmWiki:PageList
    • (:pagelist group=Events order=-time count=3 list=normal fmt=#titlespaced:)
    • also useful for menus, updates, etc... a key function to know to keep a wiki scalable
  • logical links
    • ln -s old.page new.page works but posing problems to the update page
  • sign an edit
  • titlespaced : Outputs wiki page titles with spaces between the words in the title.
  • URL rewrite
  • backlinks
  • use a template page per group for new pages
    • $EditTemplatesFmt = '{$Group}.Template';
  • force list number
  • force author field
  • internationalization (cf :PmWiki:Internationalizations )
    • simply download the localization archive, unpack, edit the configuration file
  • parenthesis within the name of a link
  • access to pmWiki variables from within a recipe
  • personalized edition page
    • PmWiki:SkinTemplates
    • per user, per action
      • e.g. Fabien||Utopiah editing a page = special mode
        • skin.php .= if ($GLOBALS['action'] == 'edit' && ( $GLOBALS['Author'] == 'Fabien' || $GLOBALS['Author'] == 'Utopiah' ) ) LoadPageTemplate($pagename, "$SkinDir/edit.tmpl");
      • edit.php .= dedicated menu including documentation, shortcuts using insMarkup to add links, useful pmWiki code, etc
    • per group?
      • ReadingNotes/ would show dedicated good practices including startrecall PTV
    • per platform?
  • $FarmD : directory for an entire farm according to PmWiki:PathVariables
  • display updates
    • (:include Site.AllRecentChanges lines=5:) (found by Person:Franck )
    • instead of (:pmfeed feed='Path:Site/AllRecentChanges?action=rss' max_count=5 showtitle=false showpubdate=true newwin=false itemspace=0 showitemdescr=true:) which doesn't display authors and summaries
  • display updates within this group only
    • !!News [--([[{$Group}.RecentChanges]])--]
    • (:include {$Group}.RecentChanges lines=5:)
  • spaces or ":" in page name are automatically removed
    • this can be used to keep nice presentation without using complex links
  • per page or per group skin
  • AddUrlSchemes Add the desired schemes as new InterMap
  • PageTextVariables (PTV) will be assigned/evaluated before any conditional markup is evaluated. That means you can use page text variables with conditional markup, but not conditional markup within page text variables.
  • PageDirectives
    • (:redirect PageName:) Redirects to another wiki page.
    • (:title text:) change the title of the page to text
  • pmWiki philosophy with a special key point on a modular design that keeps OUT of it what is not minimally required ! (and DesignNotes)
  • pmWiki is dependable on PHP limitations : backtracking limit bug
  • pmWiki allow the use of AccessKeys!
  • how to query pmWiki using the EditingAPI
    • PmWiki is designed like a library that can be called from PHP scripts -- not really.
    • typically I (pmichaud) suggest that other packages use the HTTP interface to manipulate the wiki
    • it's been very stable -- few changes over minor upgrades
  • any "official" effort to use nicely DataPortability formats?
    • PmWiki can output RSS and RDF but beyond that, no.
  • creating custom Markup()
  • preventing escaping thanks to Keep()
  • getting pages thanks to ListPages("Pattern.");
  • use of
    (:table border=1 cellpadding=5 cellspacing=0:)
    (:cellnr valign=top:)'''Title'''
    (:cell:)'''Lesson learned'''
    (:tableend:)
    for more complex tables.
  • Get pages and remove the system ones
    	// update with content
    	$cleandata = ListPages("/Oimp\./e");
    	//General cleaning
    	$cleandata = MatchPageNames($cleandata,array('-*.*RecentChanges,-*.GroupFooter,-*.GroupHeader'));
    
  • PmWiki Markup Master Index : Everything you wanted to know about wiki markup but were afraid to ask.
  • Read the content of a page
    	$pagename = "MyGroup.MyPage";
    	//getting the content of the page
    	$pagecontent = RetrieveAuthPage($pagename, 'read', $authprompt = 'false', READPAGE_CURRENT);
    	//focusing on content, not meta-data
    	$content = $pagecontent['text']
    
  • (:include Group.PageName#from#to:) : include the part of page
    • don't forget to make fullpage in the included page or they won't get resolved properly on the including page
  • when you manipulate account and password, remember that
    • PmWiki remembers that and treats you as an admin from then on (thus not prompting for an edit password) it remembers you as an admin until you logout (?action=logout) or completely shut down the browser

Specific usage cookbooks

  • rank content
    • Cookbook:StarRanker
    • consider Object/GroupHeader or Object/GroupFooter
    • PageList for rated and yet non rater object
    • rating per user
  • page creation simplified
  • handle slide shows
    • Cookbook:SlideShow (see also my comment as I had problems during the installation)
    • do not forget the little menu on the bottom right corner
      • bugs regarding notes and link to separate slide ( #slideX )
    • see the resulting Slideshows
  • display graphs
  • display equations
  • displaying wiki updates within another page
    • from external wikis Cookbook:PmFeed
    • for internal pages (:include Site.AllRecentChanges lines=5:)
      • this can be done per group too (:include {$Group}.RecentChanges lines=5:)

Learning material in video form

Videos on wiki in general and their modules moved to Wikis

Starting point for Development section of the documentation

Recipes

To do

  • consider Cookbook:SkinAlternative Skin your pages within your wiki itself, rather than using downloadable skins
  • read Cookbook:WikiRefactoring
  • get PTV value per page version
  • To Add to my PmWiki:Profiles.Utopiah
  • Use post to query pmwiki tutorial to add data by SMS to Test.Test?
    • else do a Recipe that would periodically check (easier but maybe more resources greedy and less responsive)
  • clarify the MarkUp()/Keep() difficulties with Ajax
  • list all the functionnalities required and see what recipe is the more adapted
    • try to only do recipe that are Seedea-dependant
  • modify the editor thanks to one of the several solutions
    • write a MarkUp and modify Site.EditForm
    • add javascript to handle the textarea which already has an id="text" (thus $('text') with scriptaculous) and use a pmwiki keyword for page listing (no need to write PHP then)
    • modify $HTMLHeaderFmt[]
  • PmWiki:Subversion including fully-automated and hassle-free upgrade/backup process

Note

My notes on Tools gather what I know or want to know. Consequently they are not and will never be complete references. For this, official manuals and online communities provide much better answers.

Green Marinee theme adapted by David Gilbert, powered by PmWiki