Protoball:Setup

From Protoball
Jump to navigation Jump to search

MediaWiki

Wikimedia is moving from SVN to Git. Current stable version is 1.19.0; Dreamhost uses 1.16. Many extensions are still svn only.

git clone https://gerrit.wikimedia.org/r/p/mediawiki/core.git
cd core
git checkout 1.19.6
cd ..
mv core _web_directory_

Beta Site

A copy of the files and database of protoball.org

LocalSettimgs.php, per variable

if(basename(dirname(__FILE__)) == "beta.protoball.org") {
  $wgServer = "beta.protoball.org";
  $wgDBname = _beta_db_;
  $wgDBname = _beta_logo_;
}

Refreshing the Beta Site

scripts/refresh_beta # copies the files from protoball.org to beta.protoball.org, backsup and copies protoballdb and protoballdatadb

Edit and save (no changes needed, a touch in mediawiki parlance)

Short Urls

LocalSettings.php

$wgScriptPath       = "";
$wgScript           = "$wgScriptPath/index.php";
$wgRedirectScript   = "$wgScriptPath/redirect.php";
$wgArticlePath      = "$wgScriptPath/$1";

.htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.php?title=$1 [L,QSA]

Sanitizer Adjustments

includes/Sanitizer.php

Allow anchor tags, etc

add 'a', 'span', etc to $htmlpairsStatic array

Allow tbody tags

add 'tbody' to $tabletags array and $htmlnest

Crontab

Note: All crontab commands need to special the absolute path to the command. Use "which command" to see where it is located.

...
* 2 * * * /bin/bash /home/protoball/dumpdb

Anonymous Editing of Talk Pages

Note
This didn't work and is currently disabled.

LocalSettings.php

$wgNamespaceProtection[NS_MAIN] =
$wgNamespaceProtection[NS_USER] =
$wgNamespaceProtection[NS_PROJECT] =
$wgNamespaceProtection[NS_FILE] =
$wgNamespaceProtection[NS_IMAGE] =
$wgNamespaceProtection[NS_TEMPLATE] =
$wgNamespaceProtection[NS_HELP] =
$wgNamespaceProtection[NS_CATEGORY] = array('editarticles');
$wgGroupPermissions['user']['editarticles'] = true;

Super Editor Permission Group

$wgGroupPermissions['supereditor'] = $wgGroupPermissions['editor'];
$delete_privs = array('delete', 'bigdelete', 'suppressredirect', 'rollback', 'browsearchive', 'undelete', 'unwatchedpages', 'deletedhistory', 'deletedtext');
foreach($delete_privs as $priv) {
 $wgGroupPermissions['supereditor'][$priv] = true;
}

Then add a label for supereditor like this:

http://protoball.org/MediaWiki:Group-supereditor

Super Editor

LocalSetting Variable Tweaks

Allow Rename of Title

$wgRestrictDisplayTitle = false;

This avoids thumbnail creation errors

$wgMaxShellMemory = 1131072;

Increase Parse Call Limit

$wgExpensiveParserFunctionLimit = 200;

Enable brackets in text

$smwgLinksInValues = true;

Increase max limit in inline queries

$smwgQMaxInlineLimit = 10000;

Javascript

at all javascript to MediaWiki:Common.js

JQuery UI

* we currently use just the slider
* unzipped into /jquery-ui/ directory

TinyMCE Editor

download jquery version at http://www.tinymce.com/download/download.php

unzip in root directory

see MediaWiki:Common.js for tinymce activation

Increasing the Default Text

http://www.tinymce.com/wiki.php/Configuration:content_css

Headings Plugin

download http://sourceforge.net/tracker/download.php?group_id=103281&atid=738747&file_id=312386&aid=1467705

cd ~/protoball.org/tinymce/jscripts/tiny_mce/plugins
mv ~/heading-1.3.zip .
unzip heading.zip

http://www.tinymce.com/forum/viewtopic.php?id=25260

vim editor_plugin.js # replace with corrected script
plugins: header
theme_advanced_buttons1: "h2,|,h3" //... etc

Extensions

Semantic Bundle

svn co http://svn.wikimedia.org/svnroot/mediawiki/branches/REL1_19/phase3
mv phase3
cd phase3/extensions
svn co http://semantic-mediawiki-bundle.googlecode.com/svn/trunk/ semantic-bundle
make ext
cp SemanticBundleSettings.sample.php SemanticBundleSettings.php
cp * _web_directory_/extensions/ -R

LocalSettings.php

require_once( "$IP/extensions/semantic-bundle/SemanticBundleSettings.php" );
require_once( "$IP/extensions/semantic-bundle/SemanticBundle.php" );

In page Special:SMWAdmin, click Initialize

php maintenance/update.php
vim SemanticBundleSettings.php
:%s/#include_once/include_once/g

Note: Parse error: syntax error, unexpected T_FUNCTION in /home/protoball/protoballproject.org/extensions/SemanticImageInput/SemanticImageInput.php on line 58

function registerInstantImageInput() {
        global $sfgFormPrinter;
        $sfgFormPrinter->registerInputType( 'InstantImageInput' );
};
$wgExtensionFunctions[] = "registerInstantImageInput";

Updating Ask Queries with cron touch LocalSettings.php

Semantic Wiki, by default, caches ask query information. The only way to update the cache for the one page is to edit and save that page. By setting up a cron job to touch LocalSettings.php, the cache is cleared for all ask queries the next page visit.

crontab -e
MAILTO=""
*/15 * * * * touch /home/protoball/protoball.org/LocalSettings.php
*/15 * * * * touch /home/protoball/beta.protoball.org/LocalSettings.php

Cite

https://gerrit.wikimedia.org/r/p/mediawiki/extensions/Cite.git

ParserFunctions

https://gerrit.wikimedia.org/r/p/mediawiki/extensions/ParserFunctions.git

WikiEditor

While tinymce works for html input. For essays using ref tags and for editable sections, we want wiki text

http://www.mediawiki.org/wiki/Extension:WikiEditor

cd ~/protoball.org/extensions
git clone https://gerrit.wikimedia.org/r/p/mediawiki/extensions/WikiEditor.git
cd ..
vim LocalSettings.php
require_once( "$IP/extensions/WikiEditor/WikiEditor.php" );

FancyCaptcha

cd extensions
wget http://upload.wikimedia.org/ext-dist/ConfirmEdit-MW1.19-110791.tar.gz
tar -xzf ConfirmEdit-MW1.19-110791.tar.gz
cd ..
vim LocalSettings.php
require_once( "$IP/extensions/EnhancedSearch/EnhancedSearch.php" );
require_once("$IP/extensions/ConfirmEdit/FancyCaptcha.php");
$wgCaptchaClass = 'FancyCaptcha';
$wgCaptchaDirectory = "$IP/captcha";                      
$wgCaptchaSecret = $wgDBpassword;
$wgCaptchaDirectoryLevels = 0;

#ftp up a font... Overlock-Bold.ttf is from google fonts

mkdir captcha
 ~/python/bin/python /home/protoball/protoball.org/extensions/ConfirmEdit/captcha.py --font=/home/protoball/Overlock-Bold.ttf --wordlist=/usr/share/dict/words --key=_secret_ --output=/home/protoball.org/captcha --count=200

SecurePages

cd ~
git clone http://git.fsinf.at/mediawiki/SecurePages.git SecurePages
mv SecurePages protoball.org/extensions/SecurePages
cd protoball.org
vim LocalSettings.php
#edit $wgServer as follows
$wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
$wgServer           = $wgProto.'://' . "protoball.org";

# then in then regular extension section add
require_once( "$IP/extensions/SecurePages/SecurePages.php" );
$wgSecurePages = array( -1 => array( 'UserLogin', 'Preferences', 'ChangePassword'), );

Google Analytics

Extension:Google Analytics Integration

vim LocalSettings.php
require_once( "$IP/extensions/googleAnalytics/googleAnalytics.php" );
$wgGoogleAnalyticsAccount = "UA-xxxxxxx-x";

Widgets

Extension:Widgets

vim LocalSettings.php
require_once("$IP/extensions/Widgets/Widgets.php");
$wgGroupPermissions['sysop']['editwidgets'] = true;

Running Jobs

Jobs are small pieces of work that mediawiki sets aside to do. They are executed $wgJobRunRate times per Page Access, whose default is 1.

CVS imports are included in this job queue; so, a back-log of jobs will result in unprocessed import jobs.

To run all jobs, go

php maintenance/runJobs.php

This is added in a chron job

crontab -e
...
10 * * * * /usr/local/bin/php /home/protoball/protoball.org/maintenance/runJobs.php
40 * * * * /usr/local/bin/php /home/protoball/beta.protoball.org/maintenance/runJobs.php

Enable Image Uploads

LocalSettings.php (edit)

$wgEnableUploads  = true;
chmod a+w images

Special Pages

MediaWiki:Mainpage
edit what the main page of the wiki site is
MediaWiki:Sidebar
edit the sidebar links
Special:AllMessages
System Messages, filter by changed option to see customizations

Backup

Python

Python language is used to run some maintenance scripts

Python Setup

wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.7.2.tar.gz
tar xzf virtualenv-1.7.2.tar.gz
python virtualenv-1.7.2/virtualenv.py $HOME/python
export PATH=/home/protoball/python/bin:$PATH

Packages

python/bin/easy_install mwclient
python/bin/easy_install python-fusiontables
python/bin/easy_install geopy
python/bin/easy_install --upgrade google-api-python-client
# other packages usually existing in dev environments but included for completeness
# figure out how to install mysql on your computer first then
# sudo apt-get install python-mysqldb
python/bin/easy_install mysql-python
python/bin/easy_install simplejson

Site Packages

/home/protoball/python/lib/python2.6/site-packages