diff --git a/.domains b/.domains index 119b5a8..1f72573 100644 --- a/.domains +++ b/.domains @@ -1 +1 @@ -pages.gripuqam.org.grip-uqam.ilot.io +gripuqam.org.grip-uqam.ilot.io diff --git a/.forgejo/workflows/cleanup.yaml b/.forgejo/workflows/cleanup.yaml new file mode 100644 index 0000000..edb7bc4 --- /dev/null +++ b/.forgejo/workflows/cleanup.yaml @@ -0,0 +1,32 @@ +on: + pull_request: + types: [ closed, merged ] + +jobs: + cleanup: + runs-on: x86_64 + container: + image: alpine:latest + steps: + - name: Environment setup + run: | + apk add git nodejs jq coreutils curl tree gawk grep + - name: Pages repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: pages + - name: Render website + run: | + export GITHUB_PR_NAME=$(grep -l ${{ github.sha }} previews/*/git_sha.txt | awk -F '/' '{print $2}') + echo $GITHUB_PR_NAME >> $GITHUB_ENV + rm -rf previews/$GITHUB_PR_NAME || true + cd previews + tree -d -H '.' -L 1 --noreport --charset utf-8 -T "Versions" -o index.html + - name: Website upload + run: | + git config user.name "forgejo-actions[bot]" + git config user.email "dev@ayakael.net" + git add . + git commit -m "Clean-up $GITHUB_PR_NAME" + git push diff --git a/.forgejo/workflows/pages.yaml b/.forgejo/workflows/pages.yaml new file mode 100644 index 0000000..e37c097 --- /dev/null +++ b/.forgejo/workflows/pages.yaml @@ -0,0 +1,41 @@ +on: + push: + branches: + - 'main' + +jobs: + render: + runs-on: x86_64 + container: + image: alpine:latest + steps: + - name: Environment setup + run: | + apk add git ikiwiki po4a perl-yaml-tiny tree nodejs imagemagick-perlmagick imagemagick imagemagick-jpeg findutils bash imagemagick-webp + - name: Repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Pages repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: pages + path: public + - name: Render website + run: ikiwiki --setup ikiwiki.setup + - name: Website upload + run: | + cp .pages-domains public/.domains + cp .pages-redirect public/_redirects + git log -1 --pretty=%B > commit.txt + cd public + find -name 'index.html' -type 'l' -delete + find -name 'index.fr.html' -exec bash -c 'ln -s "${0/.*\/}" "${0/.fr/}"' {} \; + date > generated.txt + # Note: the following account information will not work on GHES + git config user.name "forgejo-actions[bot]" + git config user.email "dev@ayakael.net" + git add . + git commit -F ../commit.txt + git push diff --git a/.forgejo/workflows/preview.yaml b/.forgejo/workflows/preview.yaml new file mode 100644 index 0000000..e8ec978 --- /dev/null +++ b/.forgejo/workflows/preview.yaml @@ -0,0 +1,47 @@ +on: + pull_request: + types: [ assigned, opened, synchronize, reopened ] + +jobs: + preview: + runs-on: x86_64 + container: + image: alpine:latest + steps: + - name: Environment setup + run: | + apk add git ikiwiki po4a perl-yaml-tiny tree nodejs jq coreutils curl imagemagick-perlmagick imagemagick imagemagick-jpeg findutils bash imagemagick-webp + echo "GITHUB_PR_NAME=$(curl -Ls ${{ github.server_url }}/api/v1/repos/${{ github.repository }}/pulls/${{ github.ref_name }} -H 'accept: application/json' -H 'Authorization: token ${{ secrets.FORGEJO_TOKEN }}' | jq .title | tr ' ' '-' | tr -d ':' | tr -d '"' | tr '[:upper:]' '[:lower:]' | tr '/' '-' | tr -d ',')" >> $GITHUB_ENV + - name: Repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 1 + - name: Public repo pull + uses: actions/checkout@v4 + with: + fetch-depth: 0 + ref: pages + path: public + - name: Render website + run: | + rm -rf public/previews/$GITHUB_PR_NAME || true + mkdir -p public/previews/$GITHUB_PR_NAME + sed -i "s|destdir.*|destdir: ./public/previews/$GITHUB_PR_NAME|" ikiwiki.setup + ikiwiki --setup ikiwiki.setup + cd public/previews + tree -d -H '.' -L 1 --noreport --charset utf-8 -T "Versions" -o index.html + cd $GITHUB_PR_NAME + find -name 'index.html' -type 'l' -delete + find -name 'index.fr.html' -exec bash -c 'ln -s "${0/.*\/}" "${0/.fr/}"' {} \; + - name: Website upload + run: | + git log -1 --pretty=%B > commit.txt + cd public + date > previews/$GITHUB_PR_NAME/generated.txt + echo ${{ github.sha }} > previews/$GITHUB_PR_NAME/git_sha.txt + # Note: the following account information will not work on GHES + git config user.name "forgejo-actions[bot]" + git config user.email "dev@ayakael.net" + git add . + git commit -F ../commit.txt + git push diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d3c49eb --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +.ikiwiki/ +public/ +http-server/ +*.mo +*.mo~ +*.po~ +*.pot~ +*.pyc +*.swp diff --git a/.pages-domains b/.pages-domains new file mode 100644 index 0000000..119b5a8 --- /dev/null +++ b/.pages-domains @@ -0,0 +1 @@ +pages.gripuqam.org.grip-uqam.ilot.io diff --git a/_redirects b/.pages-redirect similarity index 100% rename from _redirects rename to .pages-redirect diff --git a/footer.html b/footer.html new file mode 100644 index 0000000..f1434b2 --- /dev/null +++ b/footer.html @@ -0,0 +1,15 @@ +
+

Liens intéressants

+ +
diff --git a/footer/index.html b/footer/index.html deleted file mode 100644 index 4b69544..0000000 --- a/footer/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - footer - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
- - - - - -
-
- - - - - - - - - diff --git a/generated.txt b/generated.txt deleted file mode 100644 index e079875..0000000 --- a/generated.txt +++ /dev/null @@ -1 +0,0 @@ -Mon Mar 31 19:31:25 UTC 2025 diff --git a/ikiwiki/directive/index.html b/ikiwiki/directive/index.html deleted file mode 100644 index a573262..0000000 --- a/ikiwiki/directive/index.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - directive - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Directives are similar to a WikiLink in form, except they -begin with ! and may contain parameters. The general form is:

- -
[[!directive  param="value" param="value"]]
-
- -

This gets expanded before the rest of the page is processed, and can be used -to transform the page in various ways.

- -

The quotes around values can be omitted if the value is a simple word. -Also, some directives may use parameters without values, for example:

- -
[[!tag  foo]]
-
- -

A directive does not need to all be on one line, it can be -wrapped to multiple lines if you like:

- -
[[!directive  foo="baldersnatch"
-bar="supercalifragilisticexpialidocious" baz=11]]
-
- -

Also, multiple lines of quoted text can be used for a value. -To allow quote marks inside the quoted text, delimit the block -of text with triple-double-quotes or triple-single-quotes:

- -
[[!directive  text="""
-1. "foo"
-2. "bar"
-3. "baz"
-""" othertext='''
-1. 'quux'
-2. "foo"
-''']]
-
- -

If you want to put text with triple quotes into a parameter value, you can -use perl-style here-doc syntax, even nesting it like this:

- -
[[!directive  text=<<OUTER
-[[!otherdirective <<INNER
-inner text
-INNER]]
-outer text
-OUTER]]
-
- -

ikiwiki also has an older syntax for directives, which requires a space in -directives to distinguish them from wikilinks. This -syntax has several disadvantages: it requires a space after directives with -no parameters (such as [[pagecount ]]), and it prohibits spaces in -wikilinks. ikiwiki now provides the !-prefixed -syntax shown above as default. However, ikiwiki still supports wikis using -the older syntax, if the prefix_directives option is disabled.

- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/formatting/index.html b/ikiwiki/formatting/index.html deleted file mode 100644 index 3574037..0000000 --- a/ikiwiki/formatting/index.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Formatting wiki pages - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Text on this wiki is, by default, written in a form very close to how you -might write text for an email message. This style of text formatting is -called MarkDown, and it works like this:

- -

Leave blank lines between paragraphs.

- -

You can *emphasise* or **strongly emphasise** text by placing it -in single or double asterisks.

- -

To create a list, start each line with an asterisk:

- - - -

To make a numbered list, start each line with a number (any number will -do) followed by a period:

- -
    -
  1. "1. first line"
  2. -
  3. "2. second line"
  4. -
  5. "2. third line"
  6. -
- -

To create a header, start a line with one or more # characters followed -by a space and the header text. The number of # characters controls the -size of the header:

- -

# h1

- -

## h2

- -

### h3

- -

#### h4

- -
##### h5
- -
###### h6
- -

To create a horizontal rule, just write three or more dashes or stars on -their own line:

- -
- -

To quote someone, prefix the quote with ">":

- -
-

To be or not to be, - that is the question.

-
- -

To write a code block, indent each line with a tab or 4 spaces:

- -
10 PRINT "Hello, world!"
-20 GOTO 10
-
- -

To link to an url or email address, you can just put the -url in angle brackets: <http://ikiwiki.info>, or you can use the -form [link text](url)

- -
- -

In addition to basic html formatting using MarkDown, this wiki lets -you use the following additional features:

- - - - - - -
-
- - - - - - - - - diff --git a/ikiwiki/ikiwiki.js b/ikiwiki/ikiwiki.js deleted file mode 100644 index e67d5df..0000000 --- a/ikiwiki/ikiwiki.js +++ /dev/null @@ -1,58 +0,0 @@ -// © 2006-2010 Joey Hess -// Redistribution and use in source and compiled forms, with or without -// modification, are permitted under any circumstances. No warranty. -// -// ikiwiki's javascript utility function library - -var hooks; - -// Run onload as soon as the DOM is ready, if possible. -// gecko, opera 9 -if (document.addEventListener) { - document.addEventListener("DOMContentLoaded", run_hooks_onload, false); -} -// other browsers -window.onload = run_hooks_onload; - -var onload_done = 0; - -function run_hooks_onload() { - // avoid firing twice - if (onload_done) - return; - onload_done = true; - - run_hooks("onload"); -} - -function run_hooks(name) { - if (typeof(hooks) != "undefined") { - for (var i = 0; i < hooks.length; i++) { - if (hooks[i].name == name) { - hooks[i].call(); - } - } - } -} - -function hook(name, call) { - if (typeof(hooks) == "undefined") - hooks = new Array; - hooks.push({name: name, call: call}); -} - -function getElementsByClass(cls, node, tag) { - if (document.getElementsByClass) - return document.getElementsByClass(cls, node, tag); - if (! node) node = document; - if (! tag) tag = '*'; - var ret = new Array(); - var pattern = new RegExp("(^|\\s)"+cls+"(\\s|$)"); - var els = node.getElementsByTagName(tag); - for (i = 0; i < els.length; i++) { - if ( pattern.test(els[i].className) ) { - ret.push(els[i]); - } - } - return ret; -} diff --git a/ikiwiki/index.html b/ikiwiki/index.html deleted file mode 100644 index d83845c..0000000 --- a/ikiwiki/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ikiwiki - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This wiki is powered by ikiwiki.

- -

Some documentation on using ikiwiki:

- - - - - - -
-
- - - - - - - - - diff --git a/ikiwiki/jquery.min.js b/ikiwiki/jquery.min.js deleted file mode 100644 index a085594..0000000 --- a/ikiwiki/jquery.min.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * jQuery JavaScript Library v1.6.2 - * http://jquery.com/ - * - * Copyright 2011, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Thu Jun 30 14:16:56 2011 -0400 - */ -(function(a9,K){var aq=a9.document,br=a9.navigator,bi=a9.location;var b=(function(){var bC=function(bX,bY){return new bC.fn.init(bX,bY,bA)},bS=a9.jQuery,bE=a9.$,bA,bW=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bK=/\S/,bG=/^\s+/,bB=/\s+$/,bF=/\d/,bx=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bL=/^[\],:{}\s]*$/,bU=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bN=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bH=/(?:^|:|,)(?:\s*\[)+/g,bv=/(webkit)[ \/]([\w.]+)/,bP=/(opera)(?:.*version)?[ \/]([\w.]+)/,bO=/(msie) ([\w.]+)/,bQ=/(mozilla)(?:.*? rv:([\w.]+))?/,by=/-([a-z])/ig,bR=function(bX,bY){return bY.toUpperCase()},bV=br.userAgent,bT,bz,e,bJ=Object.prototype.toString,bD=Object.prototype.hasOwnProperty,bw=Array.prototype.push,bI=Array.prototype.slice,bM=String.prototype.trim,bs=Array.prototype.indexOf,bu={};bC.fn=bC.prototype={constructor:bC,init:function(bX,b1,b0){var bZ,b2,bY,b3;if(!bX){return this}if(bX.nodeType){this.context=this[0]=bX;this.length=1;return this}if(bX==="body"&&!b1&&aq.body){this.context=aq;this[0]=aq.body;this.selector=bX;this.length=1;return this}if(typeof bX==="string"){if(bX.charAt(0)==="<"&&bX.charAt(bX.length-1)===">"&&bX.length>=3){bZ=[null,bX,null]}else{bZ=bW.exec(bX)}if(bZ&&(bZ[1]||!b1)){if(bZ[1]){b1=b1 instanceof bC?b1[0]:b1;b3=(b1?b1.ownerDocument||b1:aq);bY=bx.exec(bX);if(bY){if(bC.isPlainObject(b1)){bX=[aq.createElement(bY[1])];bC.fn.attr.call(bX,b1,true)}else{bX=[b3.createElement(bY[1])]}}else{bY=bC.buildFragment([bZ[1]],[b3]);bX=(bY.cacheable?bC.clone(bY.fragment):bY.fragment).childNodes}return bC.merge(this,bX)}else{b2=aq.getElementById(bZ[2]);if(b2&&b2.parentNode){if(b2.id!==bZ[2]){return b0.find(bX)}this.length=1;this[0]=b2}this.context=aq;this.selector=bX;return this}}else{if(!b1||b1.jquery){return(b1||b0).find(bX)}else{return this.constructor(b1).find(bX)}}}else{if(bC.isFunction(bX)){return b0.ready(bX)}}if(bX.selector!==K){this.selector=bX.selector;this.context=bX.context}return bC.makeArray(bX,this)},selector:"",jquery:"1.6.2",length:0,size:function(){return this.length},toArray:function(){return bI.call(this,0)},get:function(bX){return bX==null?this.toArray():(bX<0?this[this.length+bX]:this[bX])},pushStack:function(bY,b0,bX){var bZ=this.constructor();if(bC.isArray(bY)){bw.apply(bZ,bY)}else{bC.merge(bZ,bY)}bZ.prevObject=this;bZ.context=this.context;if(b0==="find"){bZ.selector=this.selector+(this.selector?" ":"")+bX}else{if(b0){bZ.selector=this.selector+"."+b0+"("+bX+")"}}return bZ},each:function(bY,bX){return bC.each(this,bY,bX)},ready:function(bX){bC.bindReady();bz.done(bX);return this},eq:function(bX){return bX===-1?this.slice(bX):this.slice(bX,+bX+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bI.apply(this,arguments),"slice",bI.call(arguments).join(","))},map:function(bX){return this.pushStack(bC.map(this,function(bZ,bY){return bX.call(bZ,bY,bZ)}))},end:function(){return this.prevObject||this.constructor(null)},push:bw,sort:[].sort,splice:[].splice};bC.fn.init.prototype=bC.fn;bC.extend=bC.fn.extend=function(){var b6,bZ,bX,bY,b3,b4,b2=arguments[0]||{},b1=1,b0=arguments.length,b5=false;if(typeof b2==="boolean"){b5=b2;b2=arguments[1]||{};b1=2}if(typeof b2!=="object"&&!bC.isFunction(b2)){b2={}}if(b0===b1){b2=this;--b1}for(;b10){return}bz.resolveWith(aq,[bC]);if(bC.fn.trigger){bC(aq).trigger("ready").unbind("ready")}}},bindReady:function(){if(bz){return}bz=bC._Deferred();if(aq.readyState==="complete"){return setTimeout(bC.ready,1)}if(aq.addEventListener){aq.addEventListener("DOMContentLoaded",e,false);a9.addEventListener("load",bC.ready,false)}else{if(aq.attachEvent){aq.attachEvent("onreadystatechange",e);a9.attachEvent("onload",bC.ready);var bX=false;try{bX=a9.frameElement==null}catch(bY){}if(aq.documentElement.doScroll&&bX){bt()}}}},isFunction:function(bX){return bC.type(bX)==="function"},isArray:Array.isArray||function(bX){return bC.type(bX)==="array"},isWindow:function(bX){return bX&&typeof bX==="object"&&"setInterval" in bX},isNaN:function(bX){return bX==null||!bF.test(bX)||isNaN(bX)},type:function(bX){return bX==null?String(bX):bu[bJ.call(bX)]||"object"},isPlainObject:function(bY){if(!bY||bC.type(bY)!=="object"||bY.nodeType||bC.isWindow(bY)){return false}if(bY.constructor&&!bD.call(bY,"constructor")&&!bD.call(bY.constructor.prototype,"isPrototypeOf")){return false}var bX;for(bX in bY){}return bX===K||bD.call(bY,bX)},isEmptyObject:function(bY){for(var bX in bY){return false}return true},error:function(bX){throw bX},parseJSON:function(bX){if(typeof bX!=="string"||!bX){return null}bX=bC.trim(bX);if(a9.JSON&&a9.JSON.parse){return a9.JSON.parse(bX)}if(bL.test(bX.replace(bU,"@").replace(bN,"]").replace(bH,""))){return(new Function("return "+bX))()}bC.error("Invalid JSON: "+bX)},parseXML:function(bZ,bX,bY){if(a9.DOMParser){bY=new DOMParser();bX=bY.parseFromString(bZ,"text/xml")}else{bX=new ActiveXObject("Microsoft.XMLDOM");bX.async="false";bX.loadXML(bZ)}bY=bX.documentElement;if(!bY||!bY.nodeName||bY.nodeName==="parsererror"){bC.error("Invalid XML: "+bZ)}return bX},noop:function(){},globalEval:function(bX){if(bX&&bK.test(bX)){(a9.execScript||function(bY){a9["eval"].call(a9,bY)})(bX)}},camelCase:function(bX){return bX.replace(by,bR)},nodeName:function(bY,bX){return bY.nodeName&&bY.nodeName.toUpperCase()===bX.toUpperCase()},each:function(b0,b3,bZ){var bY,b1=0,b2=b0.length,bX=b2===K||bC.isFunction(b0);if(bZ){if(bX){for(bY in b0){if(b3.apply(b0[bY],bZ)===false){break}}}else{for(;b10&&bX[0]&&bX[bY-1])||bY===0||bC.isArray(bX));if(b0){for(;bZ1?aF.call(arguments,0):bz;if(!(--bv)){e.resolveWith(e,aF.call(bs,0))}}}if(bw>1){for(;bt
a";bv=bC.getElementsByTagName("*");bK=bC.getElementsByTagName("a")[0];if(!bv||!bv.length||!bK){return{}}bD=aq.createElement("select");bt=bD.appendChild(aq.createElement("option"));bB=bC.getElementsByTagName("input")[0];bz={leadingWhitespace:(bC.firstChild.nodeType===3),tbody:!bC.getElementsByTagName("tbody").length,htmlSerialize:!!bC.getElementsByTagName("link").length,style:/top/.test(bK.getAttribute("style")),hrefNormalized:(bK.getAttribute("href")==="/a"),opacity:/^0.55$/.test(bK.style.opacity),cssFloat:!!bK.style.cssFloat,checkOn:(bB.value==="on"),optSelected:bt.selected,getSetAttribute:bC.className!=="t",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bB.checked=true;bz.noCloneChecked=bB.cloneNode(true).checked;bD.disabled=true;bz.optDisabled=!bt.disabled;try{delete bC.test}catch(bH){bz.deleteExpando=false}if(!bC.addEventListener&&bC.attachEvent&&bC.fireEvent){bC.attachEvent("onclick",function(){bz.noCloneEvent=false});bC.cloneNode(true).fireEvent("onclick")}bB=aq.createElement("input");bB.value="t";bB.setAttribute("type","radio");bz.radioValue=bB.value==="t";bB.setAttribute("checked","checked");bC.appendChild(bB);bs=aq.createDocumentFragment();bs.appendChild(bC.firstChild);bz.checkClone=bs.cloneNode(true).cloneNode(true).lastChild.checked;bC.innerHTML="";bC.style.width=bC.style.paddingLeft="1px";bA=aq.getElementsByTagName("body")[0];by=aq.createElement(bA?"div":"body");bI={visibility:"hidden",width:0,height:0,border:0,margin:0};if(bA){b.extend(bI,{position:"absolute",left:-1000,top:-1000})}for(bF in bI){by.style[bF]=bI[bF]}by.appendChild(bC);bE=bA||bJ;bE.insertBefore(by,bE.firstChild);bz.appendChecked=bB.checked;bz.boxModel=bC.offsetWidth===2;if("zoom" in bC.style){bC.style.display="inline";bC.style.zoom=1;bz.inlineBlockNeedsLayout=(bC.offsetWidth===2);bC.style.display="";bC.innerHTML="
";bz.shrinkWrapBlocks=(bC.offsetWidth!==2)}bC.innerHTML="
t
";bG=bC.getElementsByTagName("td");bL=(bG[0].offsetHeight===0);bG[0].style.display="";bG[1].style.display="none";bz.reliableHiddenOffsets=bL&&(bG[0].offsetHeight===0);bC.innerHTML="";if(aq.defaultView&&aq.defaultView.getComputedStyle){bw=aq.createElement("div");bw.style.width="0";bw.style.marginRight="0";bC.appendChild(bw);bz.reliableMarginRight=(parseInt((aq.defaultView.getComputedStyle(bw,null)||{marginRight:0}).marginRight,10)||0)===0}by.innerHTML="";bE.removeChild(by);if(bC.attachEvent){for(bF in {submit:1,change:1,focusin:1}){bx="on"+bF;bL=(bx in bC);if(!bL){bC.setAttribute(bx,"return;");bL=(typeof bC[bx]==="function")}bz[bF+"Bubbles"]=bL}}by=bs=bD=bt=bA=bw=bC=bB=null;return bz})();b.boxModel=b.support.boxModel;var aM=/^(?:\{.*\}|\[.*\])$/,aw=/([a-z])([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!T(e)},data:function(bu,bs,bw,bv){if(!b.acceptData(bu)){return}var bz=b.expando,by=typeof bs==="string",bx,bA=bu.nodeType,e=bA?b.cache:bu,bt=bA?bu[b.expando]:bu[b.expando]&&b.expando;if((!bt||(bv&&bt&&!e[bt][bz]))&&by&&bw===K){return}if(!bt){if(bA){bu[b.expando]=bt=++b.uuid}else{bt=b.expando}}if(!e[bt]){e[bt]={};if(!bA){e[bt].toJSON=b.noop}}if(typeof bs==="object"||typeof bs==="function"){if(bv){e[bt][bz]=b.extend(e[bt][bz],bs)}else{e[bt]=b.extend(e[bt],bs)}}bx=e[bt];if(bv){if(!bx[bz]){bx[bz]={}}bx=bx[bz]}if(bw!==K){bx[b.camelCase(bs)]=bw}if(bs==="events"&&!bx[bs]){return bx[bz]&&bx[bz].events}return by?bx[b.camelCase(bs)]||bx[bs]:bx},removeData:function(bv,bt,bw){if(!b.acceptData(bv)){return}var by=b.expando,bz=bv.nodeType,bs=bz?b.cache:bv,bu=bz?bv[b.expando]:b.expando;if(!bs[bu]){return}if(bt){var bx=bw?bs[bu][by]:bs[bu];if(bx){delete bx[bt];if(!T(bx)){return}}}if(bw){delete bs[bu][by];if(!T(bs[bu])){return}}var e=bs[bu][by];if(b.support.deleteExpando||bs!=a9){delete bs[bu]}else{bs[bu]=null}if(e){bs[bu]={};if(!bz){bs[bu].toJSON=b.noop}bs[bu][by]=e}else{if(bz){if(b.support.deleteExpando){delete bv[b.expando]}else{if(bv.removeAttribute){bv.removeAttribute(b.expando)}else{bv[b.expando]=null}}}}},_data:function(bs,e,bt){return b.data(bs,e,bt,true)},acceptData:function(bs){if(bs.nodeName){var e=b.noData[bs.nodeName.toLowerCase()];if(e){return !(e===true||bs.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(bv,bx){var bw=null;if(typeof bv==="undefined"){if(this.length){bw=b.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,bt;for(var bu=0,bs=e.length;bu-1){return true}}return false},val:function(bu){var e,bs,bt=this[0];if(!arguments.length){if(bt){e=b.valHooks[bt.nodeName.toLowerCase()]||b.valHooks[bt.type];if(e&&"get" in e&&(bs=e.get(bt,"value"))!==K){return bs}bs=bt.value;return typeof bs==="string"?bs.replace(aO,""):bs==null?"":bs}return K}var bv=b.isFunction(bu);return this.each(function(bx){var bw=b(this),by;if(this.nodeType!==1){return}if(bv){by=bu.call(this,bx,bw.val())}else{by=bu}if(by==null){by=""}else{if(typeof by==="number"){by+=""}else{if(b.isArray(by)){by=b.map(by,function(bz){return bz==null?"":bz+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,by,"value")===K){this.value=by}})}});b.extend({valHooks:{option:{get:function(e){var bs=e.attributes.value;return !bs||bs.specified?e.value:e.text}},select:{get:function(e){var bx,bv=e.selectedIndex,by=[],bz=e.options,bu=e.type==="select-one";if(bv<0){return null}for(var bs=bu?bv:0,bw=bu?bv+1:bz.length;bs=0});if(!e.length){bs.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attrFix:{tabindex:"tabIndex"},attr:function(bx,bu,by,bw){var bs=bx.nodeType;if(!bx||bs===3||bs===8||bs===2){return K}if(bw&&bu in b.attrFn){return b(bx)[bu](by)}if(!("getAttribute" in bx)){return b.prop(bx,bu,by)}var bt,e,bv=bs!==1||!b.isXMLDoc(bx);if(bv){bu=b.attrFix[bu]||bu;e=b.attrHooks[bu];if(!e){if(ak.test(bu)){e=aU}else{if(a0&&bu!=="className"&&(b.nodeName(bx,"form")||a5.test(bu))){e=a0}}}}if(by!==K){if(by===null){b.removeAttr(bx,bu);return K}else{if(e&&"set" in e&&bv&&(bt=e.set(bx,by,bu))!==K){return bt}else{bx.setAttribute(bu,""+by);return by}}}else{if(e&&"get" in e&&bv&&(bt=e.get(bx,bu))!==null){return bt}else{bt=bx.getAttribute(bu);return bt===null?K:bt}}},removeAttr:function(bs,e){var bt;if(bs.nodeType===1){e=b.attrFix[e]||e;if(b.support.getSetAttribute){bs.removeAttribute(e)}else{b.attr(bs,e,"");bs.removeAttributeNode(bs.getAttributeNode(e))}if(ak.test(e)&&(bt=b.propFix[e]||e) in bs){bs[bt]=false}}},attrHooks:{type:{set:function(e,bs){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bs==="radio"&&b.nodeName(e,"input")){var bt=e.value;e.setAttribute("type",bs);if(bt){e.value=bt}return bs}}}},tabIndex:{get:function(bs){var e=bs.getAttributeNode("tabIndex");return e&&e.specified?parseInt(e.value,10):D.test(bs.nodeName)||l.test(bs.nodeName)&&bs.href?0:K}},value:{get:function(bs,e){if(a0&&b.nodeName(bs,"button")){return a0.get(bs,e)}return e in bs?bs.value:null},set:function(bs,bt,e){if(a0&&b.nodeName(bs,"button")){return a0.set(bs,bt,e)}bs.value=bt}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bw,bu,bx){var bs=bw.nodeType;if(!bw||bs===3||bs===8||bs===2){return K}var bt,e,bv=bs!==1||!b.isXMLDoc(bw);if(bv){bu=b.propFix[bu]||bu;e=b.propHooks[bu]}if(bx!==K){if(e&&"set" in e&&(bt=e.set(bw,bx,bu))!==K){return bt}else{return(bw[bu]=bx)}}else{if(e&&"get" in e&&(bt=e.get(bw,bu))!==K){return bt}else{return bw[bu]}}},propHooks:{}});aU={get:function(bs,e){return b.prop(bs,e)?e.toLowerCase():K},set:function(bs,bu,e){var bt;if(bu===false){b.removeAttr(bs,e)}else{bt=b.propFix[e]||e;if(bt in bs){bs[bt]=true}bs.setAttribute(e,e.toLowerCase())}return e}};if(!b.support.getSetAttribute){b.attrFix=b.propFix;a0=b.attrHooks.name=b.attrHooks.title=b.valHooks.button={get:function(bt,bs){var e;e=bt.getAttributeNode(bs);return e&&e.nodeValue!==""?e.nodeValue:K},set:function(bt,bu,bs){var e=bt.getAttributeNode(bs);if(e){e.nodeValue=bu;return bu}}};b.each(["width","height"],function(bs,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bt,bu){if(bu===""){bt.setAttribute(e,"auto");return bu}}})})}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bs,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bu){var bt=bu.getAttribute(e,2);return bt===null?K:bt}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||K},set:function(e,bs){return(e.style.cssText=""+bs)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bs){var e=bs.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}}})}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bs){if(b.isArray(bs)){return(e.checked=b.inArray(b(e).val(),bs)>=0)}}})});var aW=/\.(.*)$/,bb=/^(?:textarea|input|select)$/i,N=/\./g,bf=/ /g,aC=/[^\w\s.|`]/g,G=function(e){return e.replace(aC,"\\$&")};b.event={add:function(bu,by,bD,bw){if(bu.nodeType===3||bu.nodeType===8){return}if(bD===false){bD=bh}else{if(!bD){return}}var bs,bC;if(bD.handler){bs=bD;bD=bs.handler}if(!bD.guid){bD.guid=b.guid++}var bz=b._data(bu);if(!bz){return}var bE=bz.events,bx=bz.handle;if(!bE){bz.events=bE={}}if(!bx){bz.handle=bx=function(bF){return typeof b!=="undefined"&&(!bF||b.event.triggered!==bF.type)?b.event.handle.apply(bx.elem,arguments):K}}bx.elem=bu;by=by.split(" ");var bB,bv=0,e;while((bB=by[bv++])){bC=bs?b.extend({},bs):{handler:bD,data:bw};if(bB.indexOf(".")>-1){e=bB.split(".");bB=e.shift();bC.namespace=e.slice(0).sort().join(".")}else{e=[];bC.namespace=""}bC.type=bB;if(!bC.guid){bC.guid=bD.guid}var bt=bE[bB],bA=b.event.special[bB]||{};if(!bt){bt=bE[bB]=[];if(!bA.setup||bA.setup.call(bu,bw,e,bx)===false){if(bu.addEventListener){bu.addEventListener(bB,bx,false)}else{if(bu.attachEvent){bu.attachEvent("on"+bB,bx)}}}}if(bA.add){bA.add.call(bu,bC);if(!bC.handler.guid){bC.handler.guid=bD.guid}}bt.push(bC);b.event.global[bB]=true}bu=null},global:{},remove:function(bG,bB,bt,bx){if(bG.nodeType===3||bG.nodeType===8){return}if(bt===false){bt=bh}var bJ,bw,by,bD,bE=0,bu,bz,bC,bv,bA,e,bI,bF=b.hasData(bG)&&b._data(bG),bs=bF&&bF.events;if(!bF||!bs){return}if(bB&&bB.type){bt=bB.handler;bB=bB.type}if(!bB||typeof bB==="string"&&bB.charAt(0)==="."){bB=bB||"";for(bw in bs){b.event.remove(bG,bw+bB)}return}bB=bB.split(" ");while((bw=bB[bE++])){bI=bw;e=null;bu=bw.indexOf(".")<0;bz=[];if(!bu){bz=bw.split(".");bw=bz.shift();bC=new RegExp("(^|\\.)"+b.map(bz.slice(0).sort(),G).join("\\.(?:.*\\.)?")+"(\\.|$)")}bA=bs[bw];if(!bA){continue}if(!bt){for(bD=0;bD=0){bB=bB.slice(0,-1);bs=true}if(bB.indexOf(".")>=0){bt=bB.split(".");bB=bt.shift();bt.sort()}if((!bw||b.event.customEvent[bB])&&!b.event.global[bB]){return}e=typeof e==="object"?e[b.expando]?e:new b.Event(bB,e):new b.Event(bB);e.type=bB;e.exclusive=bs;e.namespace=bt.join(".");e.namespace_re=new RegExp("(^|\\.)"+bt.join("\\.(?:.*\\.)?")+"(\\.|$)");if(bD||!bw){e.preventDefault();e.stopPropagation()}if(!bw){b.each(b.cache,function(){var bF=b.expando,bE=this[bF];if(bE&&bE.events&&bE.events[bB]){b.event.trigger(e,by,bE.handle.elem)}});return}if(bw.nodeType===3||bw.nodeType===8){return}e.result=K;e.target=bw;by=by!=null?b.makeArray(by):[];by.unshift(e);var bC=bw,bu=bB.indexOf(":")<0?"on"+bB:"";do{var bz=b._data(bC,"handle");e.currentTarget=bC;if(bz){bz.apply(bC,by)}if(bu&&b.acceptData(bC)&&bC[bu]&&bC[bu].apply(bC,by)===false){e.result=false;e.preventDefault()}bC=bC.parentNode||bC.ownerDocument||bC===e.target.ownerDocument&&a9}while(bC&&!e.isPropagationStopped());if(!e.isDefaultPrevented()){var bv,bA=b.event.special[bB]||{};if((!bA._default||bA._default.call(bw.ownerDocument,e)===false)&&!(bB==="click"&&b.nodeName(bw,"a"))&&b.acceptData(bw)){try{if(bu&&bw[bB]){bv=bw[bu];if(bv){bw[bu]=null}b.event.triggered=bB;bw[bB]()}}catch(bx){}if(bv){bw[bu]=bv}b.event.triggered=K}}return e.result},handle:function(by){by=b.event.fix(by||a9.event);var bs=((b._data(this,"events")||{})[by.type]||[]).slice(0),bx=!by.exclusive&&!by.namespace,bv=Array.prototype.slice.call(arguments,0);bv[0]=by;by.currentTarget=this;for(var bu=0,e=bs.length;bu-1?b.map(bs.options,function(bu){return bu.selected}).join("-"):""}else{if(b.nodeName(bs,"select")){bt=bs.selectedIndex}}}return bt},Z=function Z(bu){var bs=bu.target,bt,bv;if(!bb.test(bs.nodeName)||bs.readOnly){return}bt=b._data(bs,"_change_data");bv=k(bs);if(bu.type!=="focusout"||bs.type!=="radio"){b._data(bs,"_change_data",bv)}if(bt===K||bv===bt){return}if(bt!=null||bv){bu.type="change";bu.liveFired=K;b.event.trigger(bu,arguments[1],bs)}};b.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(bu){var bt=bu.target,bs=b.nodeName(bt,"input")?bt.type:"";if(bs==="radio"||bs==="checkbox"||b.nodeName(bt,"select")){Z.call(this,bu)}},keydown:function(bu){var bt=bu.target,bs=b.nodeName(bt,"input")?bt.type:"";if((bu.keyCode===13&&!b.nodeName(bt,"textarea"))||(bu.keyCode===32&&(bs==="checkbox"||bs==="radio"))||bs==="select-multiple"){Z.call(this,bu)}},beforeactivate:function(bt){var bs=bt.target;b._data(bs,"_change_data",k(bs))}},setup:function(bt,bs){if(this.type==="file"){return false}for(var e in bk){b.event.add(this,e+".specialChange",bk[e])}return bb.test(this.nodeName)},teardown:function(e){b.event.remove(this,".specialChange");return bb.test(this.nodeName)}};bk=b.event.special.change.filters;bk.focus=bk.beforeactivate}function aT(bs,bu,e){var bt=b.extend({},e[0]);bt.type=bs;bt.originalEvent={};bt.liveFired=K;b.event.handle.call(bu,bt);if(bt.isDefaultPrevented()){e[0].preventDefault()}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bu,e){var bs=0;b.event.special[e]={setup:function(){if(bs++===0){aq.addEventListener(bu,bt,true)}},teardown:function(){if(--bs===0){aq.removeEventListener(bu,bt,true)}}};function bt(bv){var bw=b.event.fix(bv);bw.type=e;bw.originalEvent={};b.event.trigger(bw,null,bw.target);if(bw.isDefaultPrevented()){bv.preventDefault()}}})}b.each(["bind","one"],function(bs,e){b.fn[e]=function(by,bz,bx){var bw;if(typeof by==="object"){for(var bv in by){this[e](bv,bz,by[bv],bx)}return this}if(arguments.length===2||bz===false){bx=bz;bz=K}if(e==="one"){bw=function(bA){b(this).unbind(bA,bw);return bx.apply(this,arguments)};bw.guid=bx.guid||b.guid++}else{bw=bx}if(by==="unload"&&e!=="one"){this.one(by,bz,bx)}else{for(var bu=0,bt=this.length;bubu){break}bC.currentTarget=bw.elem;bC.data=bw.handleObj.data;bC.handleObj=bw.handleObj;bG=bw.handleObj.origHandler.apply(bw.elem,arguments);if(bG===false||bC.isPropagationStopped()){bu=bw.level;if(bG===false){bz=false}if(bC.isImmediatePropagationStopped()){break}}}return bz}function p(bs,e){return(bs&&bs!=="*"?bs+".":"")+e.replace(N,"`").replace(bf,"&")}b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error").split(" "),function(bs,e){b.fn[e]=function(bu,bt){if(bt==null){bt=bu;bu=null}return arguments.length>0?this.bind(e,bu,bt):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}}); -/* - * Sizzle CSS Selector Engine - * Copyright 2011, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var bC=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bD=0,bG=Object.prototype.toString,bx=false,bw=true,bE=/\\/g,bK=/\W/;[0,0].sort(function(){bw=false;return 0});var bu=function(bP,e,bS,bT){bS=bS||[];e=e||aq;var bV=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bP||typeof bP!=="string"){return bS}var bM,bX,b0,bL,bW,bZ,bY,bR,bO=true,bN=bu.isXML(e),bQ=[],bU=bP;do{bC.exec("");bM=bC.exec(bU);if(bM){bU=bM[3];bQ.push(bM[1]);if(bM[2]){bL=bM[3];break}}}while(bM);if(bQ.length>1&&by.exec(bP)){if(bQ.length===2&&bz.relative[bQ[0]]){bX=bH(bQ[0]+bQ[1],e)}else{bX=bz.relative[bQ[0]]?[e]:bu(bQ.shift(),e);while(bQ.length){bP=bQ.shift();if(bz.relative[bP]){bP+=bQ.shift()}bX=bH(bP,bX)}}}else{if(!bT&&bQ.length>1&&e.nodeType===9&&!bN&&bz.match.ID.test(bQ[0])&&!bz.match.ID.test(bQ[bQ.length-1])){bW=bu.find(bQ.shift(),e,bN);e=bW.expr?bu.filter(bW.expr,bW.set)[0]:bW.set[0]}if(e){bW=bT?{expr:bQ.pop(),set:bA(bT)}:bu.find(bQ.pop(),bQ.length===1&&(bQ[0]==="~"||bQ[0]==="+")&&e.parentNode?e.parentNode:e,bN);bX=bW.expr?bu.filter(bW.expr,bW.set):bW.set;if(bQ.length>0){b0=bA(bX)}else{bO=false}while(bQ.length){bZ=bQ.pop();bY=bZ;if(!bz.relative[bZ]){bZ=""}else{bY=bQ.pop()}if(bY==null){bY=e}bz.relative[bZ](b0,bY,bN)}}else{b0=bQ=[]}}if(!b0){b0=bX}if(!b0){bu.error(bZ||bP)}if(bG.call(b0)==="[object Array]"){if(!bO){bS.push.apply(bS,b0)}else{if(e&&e.nodeType===1){for(bR=0;b0[bR]!=null;bR++){if(b0[bR]&&(b0[bR]===true||b0[bR].nodeType===1&&bu.contains(e,b0[bR]))){bS.push(bX[bR])}}}else{for(bR=0;b0[bR]!=null;bR++){if(b0[bR]&&b0[bR].nodeType===1){bS.push(bX[bR])}}}}}else{bA(b0,bS)}if(bL){bu(bL,bV,bS,bT);bu.uniqueSort(bS)}return bS};bu.uniqueSort=function(bL){if(bF){bx=bw;bL.sort(bF);if(bx){for(var e=1;e0};bu.find=function(bR,e,bS){var bQ;if(!bR){return[]}for(var bN=0,bM=bz.order.length;bN":function(bQ,bL){var bP,bO=typeof bL==="string",bM=0,e=bQ.length;if(bO&&!bK.test(bL)){bL=bL.toLowerCase();for(;bM=0)){if(!bM){e.push(bP)}}else{if(bM){bL[bO]=false}}}}return false},ID:function(e){return e[1].replace(bE,"")},TAG:function(bL,e){return bL[1].replace(bE,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){bu.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bL=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bL[1]+(bL[2]||1))-0;e[3]=bL[3]-0}else{if(e[2]){bu.error(e[0])}}e[0]=bD++;return e},ATTR:function(bO,bL,bM,e,bP,bQ){var bN=bO[1]=bO[1].replace(bE,"");if(!bQ&&bz.attrMap[bN]){bO[1]=bz.attrMap[bN]}bO[4]=(bO[4]||bO[5]||"").replace(bE,"");if(bO[2]==="~="){bO[4]=" "+bO[4]+" "}return bO},PSEUDO:function(bO,bL,bM,e,bP){if(bO[1]==="not"){if((bC.exec(bO[3])||"").length>1||/^\w/.test(bO[3])){bO[3]=bu(bO[3],null,null,bL)}else{var bN=bu.filter(bO[3],bL,bM,true^bP);if(!bM){e.push.apply(e,bN)}return false}}else{if(bz.match.POS.test(bO[0])||bz.match.CHILD.test(bO[0])){return true}}return bO},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bM,bL,e){return !!bu(e[3],bM).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bM){var e=bM.getAttribute("type"),bL=bM.type;return bM.nodeName.toLowerCase()==="input"&&"text"===bL&&(e===bL||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bL){var e=bL.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bL.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bL){var e=bL.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bL.type},button:function(bL){var e=bL.nodeName.toLowerCase();return e==="input"&&"button"===bL.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bL,e){return e===0},last:function(bM,bL,e,bN){return bL===bN.length-1},even:function(bL,e){return e%2===0},odd:function(bL,e){return e%2===1},lt:function(bM,bL,e){return bLe[3]-0},nth:function(bM,bL,e){return e[3]-0===bL},eq:function(bM,bL,e){return e[3]-0===bL}},filter:{PSEUDO:function(bM,bR,bQ,bS){var e=bR[1],bL=bz.filters[e];if(bL){return bL(bM,bQ,bR,bS)}else{if(e==="contains"){return(bM.textContent||bM.innerText||bu.getText([bM])||"").indexOf(bR[3])>=0}else{if(e==="not"){var bN=bR[3];for(var bP=0,bO=bN.length;bP=0)}}},ID:function(bL,e){return bL.nodeType===1&&bL.getAttribute("id")===e},TAG:function(bL,e){return(e==="*"&&bL.nodeType===1)||bL.nodeName.toLowerCase()===e},CLASS:function(bL,e){return(" "+(bL.className||bL.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bP,bN){var bM=bN[1],e=bz.attrHandle[bM]?bz.attrHandle[bM](bP):bP[bM]!=null?bP[bM]:bP.getAttribute(bM),bQ=e+"",bO=bN[2],bL=bN[4];return e==null?bO==="!=":bO==="="?bQ===bL:bO==="*="?bQ.indexOf(bL)>=0:bO==="~="?(" "+bQ+" ").indexOf(bL)>=0:!bL?bQ&&e!==false:bO==="!="?bQ!==bL:bO==="^="?bQ.indexOf(bL)===0:bO==="$="?bQ.substr(bQ.length-bL.length)===bL:bO==="|="?bQ===bL||bQ.substr(0,bL.length+1)===bL+"-":false},POS:function(bO,bL,bM,bP){var e=bL[2],bN=bz.setFilters[e];if(bN){return bN(bO,bM,bL,bP)}}}};var by=bz.match.POS,bt=function(bL,e){return"\\"+(e-0+1)};for(var bv in bz.match){bz.match[bv]=new RegExp(bz.match[bv].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bz.leftMatch[bv]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bz.match[bv].source.replace(/\\(\d+)/g,bt))}var bA=function(bL,e){bL=Array.prototype.slice.call(bL,0);if(e){e.push.apply(e,bL);return e}return bL};try{Array.prototype.slice.call(aq.documentElement.childNodes,0)[0].nodeType}catch(bJ){bA=function(bO,bN){var bM=0,bL=bN||[];if(bG.call(bO)==="[object Array]"){Array.prototype.push.apply(bL,bO)}else{if(typeof bO.length==="number"){for(var e=bO.length;bM";e.insertBefore(bL,e.firstChild);if(aq.getElementById(bM)){bz.find.ID=function(bO,bP,bQ){if(typeof bP.getElementById!=="undefined"&&!bQ){var bN=bP.getElementById(bO[1]);return bN?bN.id===bO[1]||typeof bN.getAttributeNode!=="undefined"&&bN.getAttributeNode("id").nodeValue===bO[1]?[bN]:K:[]}};bz.filter.ID=function(bP,bN){var bO=typeof bP.getAttributeNode!=="undefined"&&bP.getAttributeNode("id");return bP.nodeType===1&&bO&&bO.nodeValue===bN}}e.removeChild(bL);e=bL=null})();(function(){var e=aq.createElement("div");e.appendChild(aq.createComment(""));if(e.getElementsByTagName("*").length>0){bz.find.TAG=function(bL,bP){var bO=bP.getElementsByTagName(bL[1]);if(bL[1]==="*"){var bN=[];for(var bM=0;bO[bM];bM++){if(bO[bM].nodeType===1){bN.push(bO[bM])}}bO=bN}return bO}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bz.attrHandle.href=function(bL){return bL.getAttribute("href",2)}}e=null})();if(aq.querySelectorAll){(function(){var e=bu,bN=aq.createElement("div"),bM="__sizzle__";bN.innerHTML="

";if(bN.querySelectorAll&&bN.querySelectorAll(".TEST").length===0){return}bu=function(bY,bP,bT,bX){bP=bP||aq;if(!bX&&!bu.isXML(bP)){var bW=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(bY);if(bW&&(bP.nodeType===1||bP.nodeType===9)){if(bW[1]){return bA(bP.getElementsByTagName(bY),bT)}else{if(bW[2]&&bz.find.CLASS&&bP.getElementsByClassName){return bA(bP.getElementsByClassName(bW[2]),bT)}}}if(bP.nodeType===9){if(bY==="body"&&bP.body){return bA([bP.body],bT)}else{if(bW&&bW[3]){var bS=bP.getElementById(bW[3]);if(bS&&bS.parentNode){if(bS.id===bW[3]){return bA([bS],bT)}}else{return bA([],bT)}}}try{return bA(bP.querySelectorAll(bY),bT)}catch(bU){}}else{if(bP.nodeType===1&&bP.nodeName.toLowerCase()!=="object"){var bQ=bP,bR=bP.getAttribute("id"),bO=bR||bM,b0=bP.parentNode,bZ=/^\s*[+~]/.test(bY);if(!bR){bP.setAttribute("id",bO)}else{bO=bO.replace(/'/g,"\\$&")}if(bZ&&b0){bP=bP.parentNode}try{if(!bZ||b0){return bA(bP.querySelectorAll("[id='"+bO+"'] "+bY),bT)}}catch(bV){}finally{if(!bR){bQ.removeAttribute("id")}}}}}return e(bY,bP,bT,bX)};for(var bL in e){bu[bL]=e[bL]}bN=null})()}(function(){var e=aq.documentElement,bM=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bM){var bO=!bM.call(aq.createElement("div"),"div"),bL=false;try{bM.call(aq.documentElement,"[test!='']:sizzle")}catch(bN){bL=true}bu.matchesSelector=function(bQ,bS){bS=bS.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!bu.isXML(bQ)){try{if(bL||!bz.match.PSEUDO.test(bS)&&!/!=/.test(bS)){var bP=bM.call(bQ,bS);if(bP||!bO||bQ.document&&bQ.document.nodeType!==11){return bP}}}catch(bR){}}return bu(bS,null,null,[bQ]).length>0}}})();(function(){var e=aq.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bz.order.splice(1,0,"CLASS");bz.find.CLASS=function(bL,bM,bN){if(typeof bM.getElementsByClassName!=="undefined"&&!bN){return bM.getElementsByClassName(bL[1])}};e=null})();function bs(bL,bQ,bP,bT,bR,bS){for(var bN=0,bM=bT.length;bN0){bO=e;break}}}e=e[bL]}bT[bN]=bO}}}if(aq.documentElement.contains){bu.contains=function(bL,e){return bL!==e&&(bL.contains?bL.contains(e):true)}}else{if(aq.documentElement.compareDocumentPosition){bu.contains=function(bL,e){return !!(bL.compareDocumentPosition(e)&16)}}else{bu.contains=function(){return false}}}bu.isXML=function(e){var bL=(e?e.ownerDocument||e:0).documentElement;return bL?bL.nodeName!=="HTML":false};var bH=function(e,bR){var bP,bN=[],bO="",bM=bR.nodeType?[bR]:bR;while((bP=bz.match.PSEUDO.exec(e))){bO+=bP[0];e=e.replace(bz.match.PSEUDO,"")}e=bz.relative[e]?e+"*":e;for(var bQ=0,bL=bM.length;bQ0){for(by=bx;by0:this.filter(e).length>0)},closest:function(bB,bs){var by=[],bv,bt,bA=this[0];if(b.isArray(bB)){var bx,bu,bw={},e=1;if(bA&&bB.length){for(bv=0,bt=bB.length;bv-1:b(bA).is(bx)){by.push({selector:bu,elem:bA,level:e})}}bA=bA.parentNode;e++}}return by}var bz=H.test(bB)||typeof bB!=="string"?b(bB,bs||this.context):0;for(bv=0,bt=this.length;bv-1:b.find.matchesSelector(bA,bB)){by.push(bA);break}else{bA=bA.parentNode;if(!bA||!bA.ownerDocument||bA===bs||bA.nodeType===11){break}}}}by=by.length>1?b.unique(by):by;return this.pushStack(by,"closest",bB)},index:function(e){if(!e||typeof e==="string"){return b.inArray(this[0],e?b(e):this.parent().children())}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bs){var bu=typeof e==="string"?b(e,bs):b.makeArray(e&&e.nodeType?[e]:e),bt=b.merge(this.get(),bu);return this.pushStack(C(bu[0])||C(bt[0])?bt:b.unique(bt))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bs){var e=bs.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bs,e,bt){return b.dir(bs,"parentNode",bt)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bs,e,bt){return b.dir(bs,"nextSibling",bt)},prevUntil:function(bs,e,bt){return b.dir(bs,"previousSibling",bt)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bs){b.fn[e]=function(bw,bt){var bv=b.map(this,bs,bw),bu=P.call(arguments);if(!Y.test(e)){bt=bw}if(bt&&typeof bt==="string"){bv=b.filter(bt,bv)}bv=this.length>1&&!au[e]?b.unique(bv):bv;if((this.length>1||a7.test(bt))&&am.test(e)){bv=bv.reverse()}return this.pushStack(bv,e,bu.join(","))}});b.extend({filter:function(bt,e,bs){if(bs){bt=":not("+bt+")"}return e.length===1?b.find.matchesSelector(e[0],bt)?[e[0]]:[]:b.find.matches(bt,e)},dir:function(bt,bs,bv){var e=[],bu=bt[bs];while(bu&&bu.nodeType!==9&&(bv===K||bu.nodeType!==1||!b(bu).is(bv))){if(bu.nodeType===1){e.push(bu)}bu=bu[bs]}return e},nth:function(bv,e,bt,bu){e=e||1;var bs=0;for(;bv;bv=bv[bt]){if(bv.nodeType===1&&++bs===e){break}}return bv},sibling:function(bt,bs){var e=[];for(;bt;bt=bt.nextSibling){if(bt.nodeType===1&&bt!==bs){e.push(bt)}}return e}});function aB(bu,bt,e){bt=bt||0;if(b.isFunction(bt)){return b.grep(bu,function(bw,bv){var bx=!!bt.call(bw,bv,bw);return bx===e})}else{if(bt.nodeType){return b.grep(bu,function(bw,bv){return(bw===bt)===e})}else{if(typeof bt==="string"){var bs=b.grep(bu,function(bv){return bv.nodeType===1});if(bn.test(bt)){return b.filter(bt,bs,!e)}else{bt=b.filter(bt,bs)}}}}return b.grep(bu,function(bw,bv){return(b.inArray(bw,bt)>=0)===e})}var ad=/ jQuery\d+="(?:\d+|null)"/g,an=/^\s+/,S=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};at.optgroup=at.option;at.tbody=at.tfoot=at.colgroup=at.caption=at.thead;at.th=at.td;if(!b.support.htmlSerialize){at._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bt){var bs=b(this);bs.text(e.call(this,bt,bs.text()))})}if(typeof e!=="object"&&e!==K){return this.empty().append((this[0]&&this[0].ownerDocument||aq).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bt){b(this).wrapAll(e.call(this,bt))})}if(this[0]){var bs=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bs.insertBefore(this[0])}bs.map(function(){var bt=this;while(bt.firstChild&&bt.firstChild.nodeType===1){bt=bt.firstChild}return bt}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bs){b(this).wrapInner(e.call(this,bs))})}return this.each(function(){var bs=b(this),bt=bs.contents();if(bt.length){bt.wrapAll(e)}else{bs.append(e)}})},wrap:function(e){return this.each(function(){b(this).wrapAll(e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bs){this.parentNode.insertBefore(bs,this)})}else{if(arguments.length){var e=b(arguments[0]);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bs){this.parentNode.insertBefore(bs,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b(arguments[0]).toArray());return e}}},remove:function(e,bu){for(var bs=0,bt;(bt=this[bs])!=null;bs++){if(!e||b.filter(e,[bt]).length){if(!bu&&bt.nodeType===1){b.cleanData(bt.getElementsByTagName("*"));b.cleanData([bt])}if(bt.parentNode){bt.parentNode.removeChild(bt)}}}return this},empty:function(){for(var e=0,bs;(bs=this[e])!=null;e++){if(bs.nodeType===1){b.cleanData(bs.getElementsByTagName("*"))}while(bs.firstChild){bs.removeChild(bs.firstChild)}}return this},clone:function(bs,e){bs=bs==null?false:bs;e=e==null?bs:e;return this.map(function(){return b.clone(this,bs,e)})},html:function(bu){if(bu===K){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ad,""):null}else{if(typeof bu==="string"&&!O.test(bu)&&(b.support.leadingWhitespace||!an.test(bu))&&!at[(d.exec(bu)||["",""])[1].toLowerCase()]){bu=bu.replace(S,"<$1>");try{for(var bt=0,bs=this.length;bt1&&bt0?this.clone(true):this).get();b(bz[bx])[bs](bv);bw=bw.concat(bv)}return this.pushStack(bw,e,bz.selector)}}});function bc(e){if("getElementsByTagName" in e){return e.getElementsByTagName("*")}else{if("querySelectorAll" in e){return e.querySelectorAll("*")}else{return[]}}}function av(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){if(b.nodeName(e,"input")){av(e)}else{if("getElementsByTagName" in e){b.grep(e.getElementsByTagName("input"),av)}}}b.extend({clone:function(bv,bx,bt){var bw=bv.cloneNode(true),e,bs,bu;if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(bv.nodeType===1||bv.nodeType===11)&&!b.isXMLDoc(bv)){ae(bv,bw);e=bc(bv);bs=bc(bw);for(bu=0;e[bu];++bu){ae(e[bu],bs[bu])}}if(bx){t(bv,bw);if(bt){e=bc(bv);bs=bc(bw);for(bu=0;e[bu];++bu){t(e[bu],bs[bu])}}}e=bs=null;return bw},clean:function(bt,bv,bE,bx){var bC;bv=bv||aq;if(typeof bv.createElement==="undefined"){bv=bv.ownerDocument||bv[0]&&bv[0].ownerDocument||aq}var bF=[],by;for(var bB=0,bw;(bw=bt[bB])!=null;bB++){if(typeof bw==="number"){bw+=""}if(!bw){continue}if(typeof bw==="string"){if(!V.test(bw)){bw=bv.createTextNode(bw)}else{bw=bw.replace(S,"<$1>");var bH=(d.exec(bw)||["",""])[1].toLowerCase(),bu=at[bH]||at._default,bA=bu[0],bs=bv.createElement("div");bs.innerHTML=bu[1]+bw+bu[2];while(bA--){bs=bs.lastChild}if(!b.support.tbody){var e=w.test(bw),bz=bH==="table"&&!e?bs.firstChild&&bs.firstChild.childNodes:bu[1]===""&&!e?bs.childNodes:[];for(by=bz.length-1;by>=0;--by){if(b.nodeName(bz[by],"tbody")&&!bz[by].childNodes.length){bz[by].parentNode.removeChild(bz[by])}}}if(!b.support.leadingWhitespace&&an.test(bw)){bs.insertBefore(bv.createTextNode(an.exec(bw)[0]),bs.firstChild)}bw=bs.childNodes}}var bD;if(!b.support.appendChecked){if(bw[0]&&typeof(bD=bw.length)==="number"){for(by=0;by=0){return bu+"px"}}else{return bu}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bs,e){return ap.test((e&&bs.currentStyle?bs.currentStyle.filter:bs.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(bv,bw){var bu=bv.style,bs=bv.currentStyle;bu.zoom=1;var e=b.isNaN(bw)?"":"alpha(opacity="+bw*100+")",bt=bs&&bs.filter||bu.filter||"";bu.filter=ah.test(bt)?bt.replace(ah,e):bt+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bt,bs){var e;b.swap(bt,{display:"inline-block"},function(){if(bs){e=W(bt,"margin-right","marginRight")}else{e=bt.style.marginRight}});return e}}}});if(aq.defaultView&&aq.defaultView.getComputedStyle){aE=function(bv,bt){var bs,bu,e;bt=bt.replace(z,"-$1").toLowerCase();if(!(bu=bv.ownerDocument.defaultView)){return K}if((e=bu.getComputedStyle(bv,null))){bs=e.getPropertyValue(bt);if(bs===""&&!b.contains(bv.ownerDocument.documentElement,bv)){bs=b.style(bv,bt)}}return bs}}if(aq.documentElement.currentStyle){aS=function(bv,bt){var bw,bs=bv.currentStyle&&bv.currentStyle[bt],e=bv.runtimeStyle&&bv.runtimeStyle[bt],bu=bv.style;if(!ba.test(bs)&&bl.test(bs)){bw=bu.left;if(e){bv.runtimeStyle.left=bv.currentStyle.left}bu.left=bt==="fontSize"?"1em":(bs||0);bs=bu.pixelLeft+"px";bu.left=bw;if(e){bv.runtimeStyle.left=e}}return bs===""?"auto":bs}}W=aE||aS;function o(bt,bs,e){var bv=bs==="width"?bt.offsetWidth:bt.offsetHeight,bu=bs==="width"?aj:aY;if(bv>0){if(e!=="border"){b.each(bu,function(){if(!e){bv-=parseFloat(b.css(bt,"padding"+this))||0}if(e==="margin"){bv+=parseFloat(b.css(bt,e+this))||0}else{bv-=parseFloat(b.css(bt,"border"+this+"Width"))||0}})}return bv+"px"}bv=W(bt,bs,bs);if(bv<0||bv==null){bv=bt.style[bs]||0}bv=parseFloat(bv)||0;if(e){b.each(bu,function(){bv+=parseFloat(b.css(bt,"padding"+this))||0;if(e!=="padding"){bv+=parseFloat(b.css(bt,"border"+this+"Width"))||0}if(e==="margin"){bv+=parseFloat(b.css(bt,e+this))||0}})}return bv+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bt){var bs=bt.offsetWidth,e=bt.offsetHeight;return(bs===0&&e===0)||(!b.support.reliableHiddenOffsets&&(bt.style.display||b.css(bt,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var j=/%20/g,al=/\[\]$/,bq=/\r?\n/g,bo=/#.*$/,az=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aV=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aI=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,aL=/^(?:GET|HEAD)$/,c=/^\/\//,L=/\?/,a3=/)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,bp=/([?&])_=[^&]*/,J=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,X={},r={},aA,s;try{aA=bi.href}catch(ar){aA=aq.createElement("a");aA.href="";aA=aA.href}s=J.exec(aA.toLowerCase())||[];function f(e){return function(bv,bx){if(typeof bv!=="string"){bx=bv;bv="*"}if(b.isFunction(bx)){var bu=bv.toLowerCase().split(h),bt=0,bw=bu.length,bs,by,bz;for(;bt=0){var e=bt.slice(bv,bt.length);bt=bt.slice(0,bv)}var bu="GET";if(bw){if(b.isFunction(bw)){bx=bw;bw=K}else{if(typeof bw==="object"){bw=b.param(bw,b.ajaxSettings.traditional);bu="POST"}}}var bs=this;b.ajax({url:bt,type:bu,dataType:"html",data:bw,complete:function(bz,by,bA){bA=bz.responseText;if(bz.isResolved()){bz.done(function(bB){bA=bB});bs.html(e?b("
").append(bA.replace(a3,"")).find(e):bA)}if(bx){bs.each(bx,[bA,by,bz])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aV.test(this.type))}).map(function(e,bs){var bt=b(this).val();return bt==null?null:b.isArray(bt)?b.map(bt,function(bv,bu){return{name:bs.name,value:bv.replace(bq,"\r\n")}}):{name:bs.name,value:bt.replace(bq,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bs){b.fn[bs]=function(bt){return this.bind(bs,bt)}});b.each(["get","post"],function(e,bs){b[bs]=function(bt,bv,bw,bu){if(b.isFunction(bv)){bu=bu||bw;bw=bv;bv=K}return b.ajax({type:bs,url:bt,data:bv,success:bw,dataType:bu})}});b.extend({getScript:function(e,bs){return b.get(e,K,bs,"script")},getJSON:function(e,bs,bt){return b.get(e,bs,bt,"json")},ajaxSetup:function(bt,e){if(!e){e=bt;bt=b.extend(true,b.ajaxSettings,e)}else{b.extend(true,bt,b.ajaxSettings,e)}for(var bs in {context:1,url:1}){if(bs in e){bt[bs]=e[bs]}else{if(bs in b.ajaxSettings){bt[bs]=b.ajaxSettings[bs]}}}return bt},ajaxSettings:{url:aA,isLocal:aI.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a9.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML}},ajaxPrefilter:f(X),ajaxTransport:f(r),ajax:function(bw,bu){if(typeof bw==="object"){bu=bw;bw=K}bu=bu||{};var bA=b.ajaxSetup({},bu),bP=bA.context||bA,bD=bP!==bA&&(bP.nodeType||bP instanceof b)?b(bP):b.event,bO=b.Deferred(),bK=b._Deferred(),by=bA.statusCode||{},bz,bE={},bL={},bN,bv,bI,bB,bF,bx=0,bt,bH,bG={readyState:0,setRequestHeader:function(bQ,bR){if(!bx){var e=bQ.toLowerCase();bQ=bL[e]=bL[e]||bQ;bE[bQ]=bR}return this},getAllResponseHeaders:function(){return bx===2?bN:null},getResponseHeader:function(bQ){var e;if(bx===2){if(!bv){bv={};while((e=az.exec(bN))){bv[e[1].toLowerCase()]=e[2]}}e=bv[bQ.toLowerCase()]}return e===K?null:e},overrideMimeType:function(e){if(!bx){bA.mimeType=e}return this},abort:function(e){e=e||"abort";if(bI){bI.abort(e)}bC(0,e);return this}};function bC(bV,bT,bW,bS){if(bx===2){return}bx=2;if(bB){clearTimeout(bB)}bI=K;bN=bS||"";bG.readyState=bV?4:0;var bQ,b0,bZ,bU=bW?bg(bA,bG,bW):K,bR,bY;if(bV>=200&&bV<300||bV===304){if(bA.ifModified){if((bR=bG.getResponseHeader("Last-Modified"))){b.lastModified[bz]=bR}if((bY=bG.getResponseHeader("Etag"))){b.etag[bz]=bY}}if(bV===304){bT="notmodified";bQ=true}else{try{b0=F(bA,bU);bT="success";bQ=true}catch(bX){bT="parsererror";bZ=bX}}}else{bZ=bT;if(!bT||bV){bT="error";if(bV<0){bV=0}}}bG.status=bV;bG.statusText=bT;if(bQ){bO.resolveWith(bP,[b0,bT,bG])}else{bO.rejectWith(bP,[bG,bT,bZ])}bG.statusCode(by);by=K;if(bt){bD.trigger("ajax"+(bQ?"Success":"Error"),[bG,bA,bQ?b0:bZ])}bK.resolveWith(bP,[bG,bT]);if(bt){bD.trigger("ajaxComplete",[bG,bA]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bO.promise(bG);bG.success=bG.done;bG.error=bG.fail;bG.complete=bK.done;bG.statusCode=function(bQ){if(bQ){var e;if(bx<2){for(e in bQ){by[e]=[by[e],bQ[e]]}}else{e=bQ[bG.status];bG.then(e,e)}}return this};bA.url=((bw||bA.url)+"").replace(bo,"").replace(c,s[1]+"//");bA.dataTypes=b.trim(bA.dataType||"*").toLowerCase().split(h);if(bA.crossDomain==null){bF=J.exec(bA.url.toLowerCase());bA.crossDomain=!!(bF&&(bF[1]!=s[1]||bF[2]!=s[2]||(bF[3]||(bF[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bA.data&&bA.processData&&typeof bA.data!=="string"){bA.data=b.param(bA.data,bA.traditional)}aQ(X,bA,bu,bG);if(bx===2){return false}bt=bA.global;bA.type=bA.type.toUpperCase();bA.hasContent=!aL.test(bA.type);if(bt&&b.active++===0){b.event.trigger("ajaxStart")}if(!bA.hasContent){if(bA.data){bA.url+=(L.test(bA.url)?"&":"?")+bA.data}bz=bA.url;if(bA.cache===false){var bs=b.now(),bM=bA.url.replace(bp,"$1_="+bs);bA.url=bM+((bM===bA.url)?(L.test(bA.url)?"&":"?")+"_="+bs:"")}}if(bA.data&&bA.hasContent&&bA.contentType!==false||bu.contentType){bG.setRequestHeader("Content-Type",bA.contentType)}if(bA.ifModified){bz=bz||bA.url;if(b.lastModified[bz]){bG.setRequestHeader("If-Modified-Since",b.lastModified[bz])}if(b.etag[bz]){bG.setRequestHeader("If-None-Match",b.etag[bz])}}bG.setRequestHeader("Accept",bA.dataTypes[0]&&bA.accepts[bA.dataTypes[0]]?bA.accepts[bA.dataTypes[0]]+(bA.dataTypes[0]!=="*"?", */*; q=0.01":""):bA.accepts["*"]);for(bH in bA.headers){bG.setRequestHeader(bH,bA.headers[bH])}if(bA.beforeSend&&(bA.beforeSend.call(bP,bG,bA)===false||bx===2)){bG.abort();return false}for(bH in {success:1,error:1,complete:1}){bG[bH](bA[bH])}bI=aQ(r,bA,bu,bG);if(!bI){bC(-1,"No Transport")}else{bG.readyState=1;if(bt){bD.trigger("ajaxSend",[bG,bA])}if(bA.async&&bA.timeout>0){bB=setTimeout(function(){bG.abort("timeout")},bA.timeout)}try{bx=1;bI.send(bE,bC)}catch(bJ){if(status<2){bC(-1,bJ)}else{b.error(bJ)}}}return bG},param:function(e,bt){var bs=[],bv=function(bw,bx){bx=b.isFunction(bx)?bx():bx;bs[bs.length]=encodeURIComponent(bw)+"="+encodeURIComponent(bx)};if(bt===K){bt=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){bv(this.name,this.value)})}else{for(var bu in e){v(bu,e[bu],bt,bv)}}return bs.join("&").replace(j,"+")}});function v(bt,bv,bs,bu){if(b.isArray(bv)){b.each(bv,function(bx,bw){if(bs||al.test(bt)){bu(bt,bw)}else{v(bt+"["+(typeof bw==="object"||b.isArray(bw)?bx:"")+"]",bw,bs,bu)}})}else{if(!bs&&bv!=null&&typeof bv==="object"){for(var e in bv){v(bt+"["+e+"]",bv[e],bs,bu)}}else{bu(bt,bv)}}}b.extend({active:0,lastModified:{},etag:{}});function bg(bA,bz,bw){var bs=bA.contents,by=bA.dataTypes,bt=bA.responseFields,bv,bx,bu,e;for(bx in bt){if(bx in bw){bz[bt[bx]]=bw[bx]}}while(by[0]==="*"){by.shift();if(bv===K){bv=bA.mimeType||bz.getResponseHeader("content-type")}}if(bv){for(bx in bs){if(bs[bx]&&bs[bx].test(bv)){by.unshift(bx);break}}}if(by[0] in bw){bu=by[0]}else{for(bx in bw){if(!by[0]||bA.converters[bx+" "+by[0]]){bu=bx;break}if(!e){e=bx}}bu=bu||e}if(bu){if(bu!==by[0]){by.unshift(bu)}return bw[bu]}}function F(bE,bw){if(bE.dataFilter){bw=bE.dataFilter(bw,bE.dataType)}var bA=bE.dataTypes,bD={},bx,bB,bt=bA.length,by,bz=bA[0],bu,bv,bC,bs,e;for(bx=1;bx=bs.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bs.animatedProperties[this.prop]=true;for(bt in bs.animatedProperties){if(bs.animatedProperties[bt]!==true){e=false}}if(e){if(bs.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bz,bA){bw.style["overflow"+bA]=bs.overflow[bz]})}if(bs.hide){b(bw).hide()}if(bs.hide||bs.show){for(var bx in bs.animatedProperties){b.style(bw,bx,bs.orig[bx])}}bs.complete.call(bw)}return false}else{if(bs.duration==Infinity){this.now=bu}else{by=bu-this.startTime;this.state=by/bs.duration;this.pos=b.easing[bs.animatedProperties[this.prop]](this.state,by,0,1,bs.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){for(var bs=b.timers,e=0;e").appendTo(e),bt=bs.css("display");bs.remove();if(bt==="none"||bt===""){if(!a6){a6=aq.createElement("iframe");a6.frameBorder=a6.width=a6.height=0}e.appendChild(a6);if(!m||!a6.createElement){m=(a6.contentWindow||a6.contentDocument).document;m.write((aq.compatMode==="CSS1Compat"?"":"")+"");m.close()}bs=m.createElement(bu);m.body.appendChild(bs);bt=b.css(bs,"display");e.removeChild(a6)}Q[bu]=bt}return Q[bu]}var U=/^t(?:able|d|h)$/i,aa=/^(?:body|html)$/i;if("getBoundingClientRect" in aq.documentElement){b.fn.offset=function(bF){var bv=this[0],by;if(bF){return this.each(function(e){b.offset.setOffset(this,bF,e)})}if(!bv||!bv.ownerDocument){return null}if(bv===bv.ownerDocument.body){return b.offset.bodyOffset(bv)}try{by=bv.getBoundingClientRect()}catch(bC){}var bE=bv.ownerDocument,bt=bE.documentElement;if(!by||!b.contains(bt,bv)){return by?{top:by.top,left:by.left}:{top:0,left:0}}var bz=bE.body,bA=aG(bE),bx=bt.clientTop||bz.clientTop||0,bB=bt.clientLeft||bz.clientLeft||0,bs=bA.pageYOffset||b.support.boxModel&&bt.scrollTop||bz.scrollTop,bw=bA.pageXOffset||b.support.boxModel&&bt.scrollLeft||bz.scrollLeft,bD=by.top+bs-bx,bu=by.left+bw-bB;return{top:bD,left:bu}}}else{b.fn.offset=function(bC){var bw=this[0];if(bC){return this.each(function(bD){b.offset.setOffset(this,bC,bD)})}if(!bw||!bw.ownerDocument){return null}if(bw===bw.ownerDocument.body){return b.offset.bodyOffset(bw)}b.offset.initialize();var bz,bt=bw.offsetParent,bs=bw,bB=bw.ownerDocument,bu=bB.documentElement,bx=bB.body,by=bB.defaultView,e=by?by.getComputedStyle(bw,null):bw.currentStyle,bA=bw.offsetTop,bv=bw.offsetLeft;while((bw=bw.parentNode)&&bw!==bx&&bw!==bu){if(b.offset.supportsFixedPosition&&e.position==="fixed"){break}bz=by?by.getComputedStyle(bw,null):bw.currentStyle;bA-=bw.scrollTop;bv-=bw.scrollLeft;if(bw===bt){bA+=bw.offsetTop;bv+=bw.offsetLeft;if(b.offset.doesNotAddBorder&&!(b.offset.doesAddBorderForTableAndCells&&U.test(bw.nodeName))){bA+=parseFloat(bz.borderTopWidth)||0;bv+=parseFloat(bz.borderLeftWidth)||0}bs=bt;bt=bw.offsetParent}if(b.offset.subtractsBorderForOverflowNotVisible&&bz.overflow!=="visible"){bA+=parseFloat(bz.borderTopWidth)||0;bv+=parseFloat(bz.borderLeftWidth)||0}e=bz}if(e.position==="relative"||e.position==="static"){bA+=bx.offsetTop;bv+=bx.offsetLeft}if(b.offset.supportsFixedPosition&&e.position==="fixed"){bA+=Math.max(bu.scrollTop,bx.scrollTop);bv+=Math.max(bu.scrollLeft,bx.scrollLeft)}return{top:bA,left:bv}}}b.offset={initialize:function(){var e=aq.body,bs=aq.createElement("div"),bv,bx,bw,by,bt=parseFloat(b.css(e,"marginTop"))||0,bu="
";b.extend(bs.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});bs.innerHTML=bu;e.insertBefore(bs,e.firstChild);bv=bs.firstChild;bx=bv.firstChild;by=bv.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(bx.offsetTop!==5);this.doesAddBorderForTableAndCells=(by.offsetTop===5);bx.style.position="fixed";bx.style.top="20px";this.supportsFixedPosition=(bx.offsetTop===20||bx.offsetTop===15);bx.style.position=bx.style.top="";bv.style.overflow="hidden";bv.style.position="relative";this.subtractsBorderForOverflowNotVisible=(bx.offsetTop===-5);this.doesNotIncludeMarginInBodyOffset=(e.offsetTop!==bt);e.removeChild(bs);b.offset.initialize=b.noop},bodyOffset:function(e){var bt=e.offsetTop,bs=e.offsetLeft;b.offset.initialize();if(b.offset.doesNotIncludeMarginInBodyOffset){bt+=parseFloat(b.css(e,"marginTop"))||0;bs+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bt,left:bs}},setOffset:function(bu,bD,bx){var by=b.css(bu,"position");if(by==="static"){bu.style.position="relative"}var bw=b(bu),bs=bw.offset(),e=b.css(bu,"top"),bB=b.css(bu,"left"),bC=(by==="absolute"||by==="fixed")&&b.inArray("auto",[e,bB])>-1,bA={},bz={},bt,bv;if(bC){bz=bw.position();bt=bz.top;bv=bz.left}else{bt=parseFloat(e)||0;bv=parseFloat(bB)||0}if(b.isFunction(bD)){bD=bD.call(bu,bx,bs)}if(bD.top!=null){bA.top=(bD.top-bs.top)+bt}if(bD.left!=null){bA.left=(bD.left-bs.left)+bv}if("using" in bD){bD.using.call(bu,bA)}else{bw.css(bA)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bt=this[0],bs=this.offsetParent(),bu=this.offset(),e=aa.test(bs[0].nodeName)?{top:0,left:0}:bs.offset();bu.top-=parseFloat(b.css(bt,"marginTop"))||0;bu.left-=parseFloat(b.css(bt,"marginLeft"))||0;e.top+=parseFloat(b.css(bs[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bs[0],"borderLeftWidth"))||0;return{top:bu.top-e.top,left:bu.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||aq.body;while(e&&(!aa.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bs,e){var bt="scroll"+e;b.fn[bt]=function(bw){var bu,bv;if(bw===K){bu=this[0];if(!bu){return null}bv=aG(bu);return bv?("pageXOffset" in bv)?bv[bs?"pageYOffset":"pageXOffset"]:b.support.boxModel&&bv.document.documentElement[bt]||bv.document.body[bt]:bu[bt]}return this.each(function(){bv=aG(this);if(bv){bv.scrollTo(!bs?bw:b(bv).scrollLeft(),bs?bw:b(bv).scrollTop())}else{this[bt]=bw}})}});function aG(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bs,e){var bt=e.toLowerCase();b.fn["inner"+e]=function(){var bu=this[0];return bu&&bu.style?parseFloat(b.css(bu,bt,"padding")):null};b.fn["outer"+e]=function(bv){var bu=this[0];return bu&&bu.style?parseFloat(b.css(bu,bt,bv?"margin":"border")):null};b.fn[bt]=function(bv){var bw=this[0];if(!bw){return bv==null?null:this}if(b.isFunction(bv)){return this.each(function(bA){var bz=b(this);bz[bt](bv.call(this,bA,bz[bt]()))})}if(b.isWindow(bw)){var bx=bw.document.documentElement["client"+e];return bw.document.compatMode==="CSS1Compat"&&bx||bw.document.body["client"+e]||bx}else{if(bw.nodeType===9){return Math.max(bw.documentElement["client"+e],bw.body["scroll"+e],bw.documentElement["scroll"+e],bw.body["offset"+e],bw.documentElement["offset"+e])}else{if(bv===K){var by=b.css(bw,bt),bu=parseFloat(by);return b.isNaN(bu)?by:bu}else{return this.css(bt,typeof bv==="string"?bv:bv+"px")}}}}});a9.jQuery=a9.$=b})(window); \ No newline at end of file diff --git a/ikiwiki/login-selector/login-selector.js b/ikiwiki/login-selector/login-selector.js deleted file mode 100644 index f54a944..0000000 --- a/ikiwiki/login-selector/login-selector.js +++ /dev/null @@ -1,225 +0,0 @@ -/* -Based on the Simple OpenID Plugin -http://code.google.com/p/openid-selector/ - -This code is licenced under the New BSD License. -*/ - -var selections_email_large = { - email: { - name: 'Email', - icon: 'wikiicons/email.png', - label: 'Enter your email address:', - url: null - } -}; -var selections_openid_large = { - openid: { - name: 'OpenID', - icon: 'wikiicons/openidlogin-bg.gif', - label: 'Enter your OpenID:', - url: null - } -}; -var selections = $.extend({}, selections_email_large, selections_openid_large); - -var selector = { - - ajaxHandler: null, - cookie_expires: 6*30, // 6 months. - cookie_name: 'openid_selection', // historical name - cookie_path: '/', - - img_path: 'images/', - - input_id: null, - selection_url: null, - selection_id: null, - othersignin_id: null, - - init: function(input_id, login_methods, othersignin_id, othersignin_label) { - - var selector_btns = $('#login_btns'); - - this.input_id = input_id; - - $('#login_choice').show(); - $('#login_input_area').empty(); - - // add box for each selection - if (login_methods['openid']) { - for (id in selections_openid_large) { - selector_btns.append(this.getBoxHTML(selections_openid_large[id], 'large')); - } - } - if (login_methods['email']) { - for (id in selections_email_large) { - selector_btns.prepend(this.getBoxHTML(selections_email_large[id], 'large')); - } - } - - if (othersignin_label != "") { - this.othersignin_label=othersignin_label; - } - else { - this.othersignin_label="other"; - } - if (othersignin_id != "") { - this.othersignin_id=othersignin_id; - selector_btns.prepend( - '' + - '' + - ' ' + this.othersignin_label + - '' - ); - $('#'+this.othersignin_id).hide(); - } - - $('#login_selector_form').submit(this.submit); - - var box_id = this.readCookie(); - if (box_id) { - this.signin(box_id, true); - } - }, - getBoxHTML: function(selection, box_size) { - var label=""; - var title="" - if (box_size == 'large') { - label=' ' + selection["name"]; - } - else { - title=' title="'+selection["name"]+'"'; - } - var box_id = selection["name"].toLowerCase(); - return '' + - '' + - label + - ''; - - }, - /* selection image click */ - signin: function(box_id, onload) { - - if (box_id == 'othersignin') { - this.highlight(box_id); - $('#login_input_area').empty(); - $('#'+this.othersignin_id).show(); - this.setCookie(box_id); - return; - } - else { - if (this.othersignin_id) { - $('#'+this.othersignin_id).hide(); - } - } - - var selection = selections[box_id]; - if (! selection) { - return; - } - - this.highlight(box_id); - - this.selection_id = box_id; - this.selection_url = selection['url']; - - // prompt user for input? - if (selection['label']) { - this.setCookie(box_id); - this.useInputBox(selection); - } else { - this.setCookie(''); - $('#login_input_area').empty(); - if (! onload) { - $('#login_selector_form').submit(); - } - } - }, - /* Sign-in button click */ - submit: function() { - var url = selector.selection_url; - if (url) { - url = url.replace('{username}', $('#entry').val()); - selector.setOpenIdUrl(url); - } - else { - selector.setOpenIdUrl(""); - } - if (selector.ajaxHandler) { - selector.ajaxHandler(selector.selection_id, document.getElementById(selector.input_id).value); - return false; - } - return true; - }, - setOpenIdUrl: function (url) { - - var hidden = $('#'+this.input_id); - if (hidden.length > 0) { - hidden.value = url; - } else { - $('#login_selector_form').append(''); - } - }, - highlight: function (box_id) { - - // remove previous highlight. - var highlight = $('#login_highlight'); - if (highlight) { - highlight.replaceWith($('#login_highlight a')[0]); - } - // add new highlight. - $('.'+box_id).wrap('
'); - }, - setCookie: function (value) { - - var date = new Date(); - date.setTime(date.getTime()+(this.cookie_expires*24*60*60*1000)); - var expires = "; expires="+date.toGMTString(); - - document.cookie = this.cookie_name+"="+value+expires+"; path=" + this.cookie_path; - }, - readCookie: function () { - var nameEQ = this.cookie_name + "="; - var ca = document.cookie.split(';'); - for(var i=0;i < ca.length;i++) { - var c = ca[i]; - while (c.charAt(0)==' ') c = c.substring(1,c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); - } - return null; - }, - useInputBox: function (selection) { - - var input_area = $('#login_input_area'); - - var html = ''; - var id = selection['name']+'_entry'; - var value = ''; - var label = selection['label']; - var style = ''; - - if (selection['name'] == 'OpenID') { - id = this.input_id; - value = ''; - style = 'background:#FFF url(wikiicons/openidlogin-bg.gif) no-repeat scroll 0 50%; padding-left:18px;'; - } - if (label) { - html = ''; - } - html += '' + - ''; - - input_area.empty(); - input_area.append(html); - - $('#'+id).focus(); - }, - setAjaxHandler: function (ajaxFunction) { - this.ajaxHandler = ajaxFunction; - } -}; diff --git a/ikiwiki/markdown/index.html b/ikiwiki/markdown/index.html deleted file mode 100644 index 2756845..0000000 --- a/ikiwiki/markdown/index.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - markdown - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Markdown -is a minimal markup language that resembles plain text as used in -email messages. It is the markup language used by this wiki by default.

- -

For documentation about the markdown syntax, see formatting and -Markdown: syntax.

- -

Note that WikiLinks and directives are not part -of the markdown syntax, and are the only bit of markup that this wiki -handles internally.

- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/openid/index.html b/ikiwiki/openid/index.html deleted file mode 100644 index ae57483..0000000 --- a/ikiwiki/openid/index.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OpenID - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This wiki has OpenID enabled.

- -

OpenID is a decentralized authentication mechanism -that allows you to have one login that you can use on a growing number of -websites.

- -

If you have an account with some of the larger web service providers, -you might already have an OpenID. -Directory of OpenID providers

- -

To sign in to this wiki using OpenID, just enter it in the OpenID field in the -signin form. You do not need to give this wiki a password or go through any -registration process when using OpenID.

- -
- -

It's also possible to make a page in the wiki usable as an OpenID url, -by delegating it to an openid server. Here's an example of how to do that:

- -
[[!meta  openid="http://yourid.myopenid.com/"
-       server="http://www.myopenid.com/server"]]
-
- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/pagespec/attachment/index.html b/ikiwiki/pagespec/attachment/index.html deleted file mode 100644 index 727f13a..0000000 --- a/ikiwiki/pagespec/attachment/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - attachment - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This wiki has attachments disabled.

- -

If attachments are enabled, the wiki admin can control what types of -attachments will be accepted, via the allowed_attachments -configuration setting.

- -

For example, to limit most users to uploading small images, and nothing else, -while allowing larger mp3 files to be uploaded by joey into a specific -directory, and check all attachments for viruses, something like this could be -used:

- -
virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or ((mimetype(image/jpeg) or mimetype(image/png)) and maxsize(50kb)))
-
- -

The regular PageSpec syntax is expanded with the following -additional tests:

- -
    -
  • "maxsize(size)" - tests whether the attachment is no larger than the -specified size. The size defaults to being in bytes, but "kb", "mb", "gb" -etc can be used to specify the units.

  • -
  • "minsize(size)" - tests whether the attachment is no smaller than the -specified size.

  • -
  • "ispage()" - tests whether the attachment will be treated by ikiwiki as a -wiki page. (Ie, if it has an extension of ".mdwn", or of any other enabled -page format).

    - -

    So, if you don't want to allow wiki pages to be uploaded as attachments, -use !ispage() ; if you only want to allow wiki pages to be uploaded -as attachments, use ispage().

  • -
  • "mimetype(foo/bar)" - checks the MIME type of the attachment. You can -include a glob in the type, for example mimetype(image/*).

  • -
  • "virusfree()" - checks the attachment with an antiviral program.

  • -
- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/pagespec/index.html b/ikiwiki/pagespec/index.html deleted file mode 100644 index 553f772..0000000 --- a/ikiwiki/pagespec/index.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pagespec - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

To select a set of pages, such as pages that are locked, pages -whose commit emails you want subscribe to, or pages to combine into a -blog, the wiki uses a PageSpec. This is an expression that matches -a set of pages.

- -

The simplest PageSpec is a simple list of pages. For example, this matches -any of the three listed pages:

- -
foo or bar or baz
-
- -

More often you will want to match any pages that have a particular thing in -their name. You can do this using a glob pattern. "*" stands for any part -of a page name, and "?" for any single letter of a page name. So this -matches all pages about music, and any SubPages of the SandBox, but does -not match the SandBox itself:

- -
*music* or SandBox/*
-
- -

You can also prefix an item with "!" to skip pages that match it. So to -match all pages except for Discussion pages and the SandBox:

- -
* and !SandBox and !*/Discussion
-
- -

Some more elaborate limits can be added to what matches using these functions:

- -
    -
  • "glob(someglob)" - matches pages and other files that match the given glob. -Just writing the glob by itself is actually a shorthand for this function.
  • -
  • "page(glob)" - like glob(), but only matches pages, not other files
  • -
  • "link(page)" - matches only pages that link to a given page (or glob)
  • -
  • "tagged(tag)" - matches pages that are tagged or link to the given tag (or -tags matched by a glob)
  • -
  • "backlink(page)" - matches only pages that a given page links to
  • -
  • "creation_month(month)" - matches only files created on the given month -number
  • -
  • "creation_day(mday)" - or day of the month
  • -
  • "creation_year(year)" - or year
  • -
  • "created_after(page)" - matches only files created after the given page -was created
  • -
  • "created_before(page)" - matches only files created before the given page -was created
  • -
  • "internal(glob)" - like glob(), but matches even internal-use -pages that globs do not usually match.
  • -
  • "title(glob)", "author(glob)", "authorurl(glob)", -"license(glob)", "copyright(glob)", "guid(glob)" -
      -
    • match pages that have the given metadata, matching the specified glob.
    • -
  • -
  • "user(username)" - tests whether a modification is being made by a -user with the specified username. If openid is enabled, an openid can also -be put here. Glob patterns can be used in the username. For example, -to match all openid users, use user(*://*)
  • -
  • "admin()" - tests whether a modification is being made by one of the -wiki admins.
  • -
  • "ip(address)" - tests whether a modification is being made from the -specified IP address. Glob patterns can be used in the address. For -example, ip(127.0.0.*)
  • -
  • "comment(glob)" - matches comments to a page matching the glob.
  • -
  • "comment_pending(glob)" - matches unmoderated, pending comments.
  • -
  • "postcomment(glob)" - matches only when comments are being -posted to a page matching the specified glob
  • -
- -

For example, to match all pages in a blog that link to the page about music -and were written in 2005:

- -
blog/* and link(music) and creation_year(2005)
-
- -

Note the use of "and" in the above example, that means that only pages that -match each of the three expressions match the whole. Use "and" when you -want to combine expression like that; "or" when it's enough for a page to -match one expression. Note that it doesn't make sense to say "index and -SandBox", since no page can match both expressions.

- -

If you want to include only one level of subpages, you can use

- -
blog/* and !blog/*/*
-
- -

More complex expressions can also be created, by using parentheses for -grouping. For example, to match pages in a blog that are tagged with either -of two tags, use:

- -
blog/* and (tagged(foo) or tagged(bar))
-
- -

Note that page names in PageSpecs are matched against the absolute -filenames of the pages in the wiki, so a pagespec "foo" used on page -"a/b" will not match a page named "a/foo" or "a/b/foo". To match -relative to the directory of the page containing the pagespec, you can -use "./". For example, "./foo" on page "a/b" matches page "a/foo".

- -

To indicate the name of the page the PageSpec is used in, you can -use a single dot. For example, link(.) matches all the pages -linking to the page containing the PageSpec.

- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/pagespec/po/index.html b/ikiwiki/pagespec/po/index.html deleted file mode 100644 index 6fe6bb4..0000000 --- a/ikiwiki/pagespec/po/index.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - po - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This wiki has po support disabled.

- -

If the po plugin is enabled, the regular -PageSpec syntax is expanded with the following additional -tests that can be used to improve user navigation in a multi-lingual -wiki:

- -
    -
  • "lang(LL)" - tests whether a page is written in the language -specified as a ISO639-1 (two-letter) language code.
  • -
  • "currentlang()" - tests whether a page is written in the same -language as the current page.
  • -
  • "needstranslation()" - tests whether a page needs translation -work. Only slave pages match this PageSpec. A minimum target -translation percentage can optionally be passed as an integer -parameter: "needstranslation(50)" matches only pages less than 50% -translated.
  • -
- -

Note that every non-po page is considered to be written in -po_master_language, as specified in ikiwiki.setup.

- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/pagespec/sorting/index.html b/ikiwiki/pagespec/sorting/index.html deleted file mode 100644 index a1645eb..0000000 --- a/ikiwiki/pagespec/sorting/index.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sorting - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Some directives that use -PageSpecs allow -specifying the order that matching pages are shown in. The following sort -orders can be specified using the sort parameter:

- -
    -
  • age - List pages from the most recently created to the oldest.

  • -
  • mtime - List pages with the most recently modified first.

  • -
  • title - Order by title (page name), e.g. "z/a a/b a/c"

  • -
  • path - Order by page name including parents, e.g. "a/b a/c z/a"

  • -
  • meta(title) - Order according to the [[!meta title="foo" sortas="bar"]] -or [[!meta title="foo"]] directive, or the page name if no -full title was set. meta(author), meta(date), meta(updated), etc. -also work.

  • -
- -

In addition, you can combine several sort orders and/or reverse the order of -sorting, with a string like age -title (which would sort by age, then by -title in reverse order if two pages have the same age).

- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/relativedate.js b/ikiwiki/relativedate.js deleted file mode 100644 index e8643f4..0000000 --- a/ikiwiki/relativedate.js +++ /dev/null @@ -1,79 +0,0 @@ -// © 2006-2010 Joey Hess -// Redistribution and use in source and compiled forms, with or without -// modification, are permitted under any circumstances. No warranty. -// -// Causes html elements in the 'relativedate' class to be displayed -// as relative dates. The date is parsed from the title attribute, or from -// the element content. - -var dateElements; - -hook("onload", getDates); - -function getDates() { - dateElements = getElementsByClass('relativedate'); - for (var i = 0; i < dateElements.length; i++) { - var elt = dateElements[i]; - var title = elt.attributes.title; - var d = new Date(title ? title.value : elt.innerHTML); - if (! isNaN(d)) { - dateElements[i].date=d; - elt.title=elt.innerHTML; - } - } - - showDates(); -} - -function showDates() { - for (var i = 0; i < dateElements.length; i++) { - var elt = dateElements[i]; - var d = elt.date; - if (! isNaN(d)) { - elt.innerHTML=relativeDate(d); - } - } - setTimeout(showDates,30000); // keep updating every 30s -} - -var timeUnits = [ - { unit: 'year', seconds: 60 * 60 * 24 * 364 }, - { unit: 'month', seconds: 60 * 60 * 24 * 30 }, - { unit: 'day', seconds: 60 * 60 * 24 }, - { unit: 'hour', seconds: 60 * 60 }, - { unit: 'minute', seconds: 60 }, -]; - -function relativeDate(date) { - var now = new Date(); - var offset = date.getTime() - now.getTime(); - var seconds = Math.round(Math.abs(offset) / 1000); - - // hack to avoid reading just in the future if there is a minor - // amount of clock slip - if (offset >= 0 && seconds < 30 * 60 * 60) { - return "just now"; - } - - var ret = ""; - var shown = 0; - for (i = 0; i < timeUnits.length; i++) { - if (seconds >= timeUnits[i].seconds) { - var num = Math.floor(seconds / timeUnits[i].seconds); - seconds -= num * timeUnits[i].seconds; - if (ret) - ret += "and "; - ret += num + " " + timeUnits[i].unit + (num > 1 ? "s" : "") + " "; - - if (++shown == 2) - break; - } - else if (shown) - break; - } - - if (! ret) - ret = "less than a minute " - - return ret + (offset < 0 ? "ago" : "from now"); -} diff --git a/ikiwiki/searching/index.html b/ikiwiki/searching/index.html deleted file mode 100644 index bc138be..0000000 --- a/ikiwiki/searching/index.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - searching - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This wiki has searching disabled.

- -

If searching is enabled, you can enter search terms in the search field, -as you'd expect. There are a few special things you can do to construct -more powerful searches.

- -
    -
  • To match a phrase, enclose it in double quotes.
  • -
  • AND can be used to search for documents containing two expressions.
  • -
  • OR can be used to search for documents containing either one of -two expressions.
  • -
  • Parentheses can be used to build up complicated search expressions. For -example, "(foo AND bar) OR (me AND you)"
  • -
  • Prefix a search term with "-" to avoid it from appearing in the results. -For example, "-discussion" will omit "discussion".
  • -
  • To search for a page with a given title, use "title:foo".
  • -
  • To search for pages that contain a "bar" link, use "link:bar".
  • -
- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/subpage/index.html b/ikiwiki/subpage/index.html deleted file mode 100644 index d33a09a..0000000 --- a/ikiwiki/subpage/index.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - subpage - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

ikiwiki supports placing pages in a directory hierarchy. For example, -this page, SubPage has some related pages placed under it, like -LinkingRules. This is a useful way to add some order to your -wiki rather than just having a great big directory full of pages.

- -

To add a SubPage, just make a subdirectory and put pages in it. For -example, this page is subpage.mdwn in this wiki's source, and there is also -a subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages -can be nested as deeply as you'd like.

- -

Linking to and from a SubPage is explained in LinkingRules.

- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/subpage/linkingrules/index.html b/ikiwiki/subpage/linkingrules/index.html deleted file mode 100644 index bcd6a55..0000000 --- a/ikiwiki/subpage/linkingrules/index.html +++ /dev/null @@ -1,149 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - linkingrules - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

To link to or from a SubPage, you can normally use a regular -WikiLink that does not contain the name of the parent directory of -the SubPage. Ikiwiki descends the directory hierarchy looking for a -page that matches your link.

- -

For example, if FooBar/SubPage links to "OtherPage", ikiwiki will first -prefer pointing the link to FooBar/SubPage/OtherPage if it exists, next -to FooBar/OtherPage and finally to OtherPage in the root of the wiki.

- -

Note that this means that if a link on FooBar/SomePage to "OtherPage" -currently links to OtherPage, in the root of the wiki, and FooBar/OtherPage -is created, the link will change to point to FooBar/OtherPage. On the -other hand, a link from BazBar to "OtherPage" would be unchanged by this -creation of a SubPage of FooBar.

- -

You can also specify a link that contains a directory name, like -"FooBar/OtherPage" to more exactly specify what page to link to. This is -the only way to link to an unrelated SubPage.

- -

You can use this to, for example, to link from BazBar to "FooBar/SubPage", -or from BazBar/SubPage to "FooBar/SubPage".

- -

You can also use "/" at the start of a link, to specify exactly which page -to link to, when there are multiple pages with similar names and the link -goes to the wrong page by default. For example, linking from -"FooBar/SubPage" to "/OtherPage" will link to the "OtherPage" in the root -of the wiki, even if there is a "FooBar/OtherPage".

- -

Also, if the wiki is configured with a userdir, you can link to pages -within the userdir without specifying a path to them. This is to allow for -easy linking to a user's page in the userdir, to sign a comment. These -links are checked for last of all.

- - - - -
-
- - - - - - - - - diff --git a/ikiwiki/toggle.js b/ikiwiki/toggle.js deleted file mode 100644 index 597a374..0000000 --- a/ikiwiki/toggle.js +++ /dev/null @@ -1,33 +0,0 @@ -// © 2006-2010 Joey Hess -// Redistribution and use in source and compiled forms, with or without -// modification, are permitted under any circumstances. No warranty. -// -// Uses CSS to hide toggleables, to avoid any flashing on page load. The -// CSS is only emitted after it tests that it's going to be able -// to show the toggleables. -if (document.getElementById && document.getElementsByTagName && document.createTextNode) { - document.write(''); - hook("onload", inittoggle); -} - -function inittoggle() { - var as = getElementsByClass('toggle'); - for (var i = 0; i < as.length; i++) { - var id = as[i].href.match(/#(\w.+)/)[1]; - if (document.getElementById(id).className == "toggleable") - document.getElementById(id).style.display="none"; - as[i].onclick = function() { - toggle(this); - return false; - } - } -} - -function toggle(s) { - var id = s.href.match(/#(\w.+)/)[1]; - style = document.getElementById(id).style; - if (style.display == "none") - style.display = "block"; - else - style.display = "none"; -} diff --git a/ikiwiki/wikilink/index.html b/ikiwiki/wikilink/index.html deleted file mode 100644 index 7cf3d0c..0000000 --- a/ikiwiki/wikilink/index.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - wikilink - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

WikiLinks provide easy linking between pages of the wiki. To create a -WikiLink, just put the name of the page to link to in double brackets. -For example [[WikiLink]].

- -

If you ever need to write something like [[WikiLink]] without creating a -wikilink, just prefix it with a \, like \[[WikiLink]].

- -

There are some special LinkingRules that come into play when -linking between SubPages.

- -

WikiLinks are matched with page names in a case-insensitive manner, so you -don't need to worry about getting the case the same, and can capitalise -links at the start of a sentence, and so on.

- -

It's also possible to write a WikiLink that uses something other than the page -name as the link text. For example [[foo_bar|SandBox]] links to the SandBox -page, but the link will appear like this: foo bar.

- -

To link to an anchor inside a page, you can use something like -[[WikiLink#foo]] .

- -

If the file linked to by a WikiLink looks like an image, it will -be displayed inline on the page.

- -
- -

You can also put an url in a WikiLink, to link to an external page. -Email addresses can also be used to generate a mailto link.

- - - - -
-
- - - - - - - - - diff --git a/index.html b/index.html index 09ad77d..3aaa68f 100644 --- a/index.html +++ b/index.html @@ -1,90 +1,8 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Accueil - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
- - +[[!meta title="Accueil"]] +[[!meta description="Le Groupe de Recherche d’Intérêt Public du Québec à l’Université du Québec à Montréal (GRIP-UQAM) réunit des personnes de la communauté étudiante uqamienne souhaitant agir de façon équitable en visant le très long terme pour le bien-être social et écologique des collectivités présentes et futures dans une perspective anticoloniale."]]
- Abonne-toi à notre infolettre, dis-nous tes intérêts ou envoie-nous un courriel ! :) + Abonne-toi à notre infolettre, dis-nous tes intérêts ou envoie-nous [[un courriel|contact]] ! :)
@@ -95,19 +13,19 @@
@@ -116,7 +34,7 @@

Voir les [[anciens comités|ancienscomites].

-

Voir les questions-réponses.

+

Voir les [[questions-réponses|faq]].

@@ -145,7 +63,7 @@ une communication avec et entre les comités et organisent des activités d’intérêt général.

- Joignez-nous ! Écrivez-nous ! + [[Joignez-nous|se-joindre]] ! [[Écrivez-nous|contact]] !

Instagram Site web

@@ -228,7 +146,7 @@

SOS Territoire

-

SOS Territoire est un comité du GRIP-UQAM et un groupe de +

SOS Territoire est un comité du [[GRIP-UQAM|a-propos]] et un groupe de recherche et d’action pour la protection du territoire dans une perspective d'écologie sociale en visant un rapprochement entre les autochtones et non-autochtones, notamment à travers l’Alliance Mamo en construction.

@@ -252,7 +170,7 @@ société écologique et conviviale.

Au sein du GRIP-UQAM, et lorsque possible en partenariat avec d'autres - comités tels Anarchives et le PASC ou + comités tels [[Anarchives|index#anarchives]] et le [[PASC|index#pasc]] ou encore le Cercle des Premières Nations de l'UQAM (CPNUQAM), le comité SOS Territoire travaille sur l'aspect anticolonial de l'écologie sociale, notamment à travers le support @@ -302,8 +220,8 @@

@@ -344,38 +262,3 @@
- - - - -
-
- - - - - - - - - diff --git a/local.css b/local.css deleted file mode 100644 index a0dec8c..0000000 --- a/local.css +++ /dev/null @@ -1,3 +0,0 @@ -/* ikiwiki local style sheet */ - -/* Add local styling here, instead of modifying style.css. */ diff --git a/plugins/IkiWiki/Plugin/img.pm b/plugins/IkiWiki/Plugin/img.pm new file mode 100644 index 0000000..e4de9e8 --- /dev/null +++ b/plugins/IkiWiki/Plugin/img.pm @@ -0,0 +1,325 @@ +#!/usr/bin/perl +# Ikiwiki enhanced image handling plugin +# Christian Mock cm@tahina.priv.at 20061002 +package IkiWiki::Plugin::img; + +use warnings; +use strict; +use IkiWiki 3.00; + +my %imgdefaults; + +sub import { + hook(type => "getsetup", id => "img", call => \&getsetup); + hook(type => "preprocess", id => "img", call => \&preprocess, scan => 1); +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => undef, + section => "widget", + }, + img_allowed_formats => { + type => "string", + default => [qw(jpeg png gif svg webp)], + description => "Image formats to process (jpeg, png, gif, svg, webp, pdf or 'everything' to accept all)", + # ImageMagick has had arbitrary code execution flaws, + # and the whole delegates mechanism is scary from + # that perspective + safe => 0, + rebuild => 0, + }, +} + +sub allowed { + my $format = shift; + my $allowed = $config{img_allowed_formats}; + $allowed = ['jpeg', 'png', 'gif', 'svg', 'webp'] unless defined $allowed && @$allowed; + + foreach my $a (@$allowed) { + return 1 if lc($a) eq $format || lc($a) eq 'everything'; + } + + return 0; +} + +sub preprocess (@) { + my ($image) = $_[0] =~ /$config{wiki_file_regexp}/; # untaint + my %params=@_; + + if (! defined $image) { + error("bad image filename"); + } + + if (exists $imgdefaults{$params{page}}) { + foreach my $key (keys %{$imgdefaults{$params{page}}}) { + if (! exists $params{$key}) { + $params{$key}=$imgdefaults{$params{page}}->{$key}; + } + } + } + + if (! exists $params{size} || ! length $params{size}) { + $params{size}='full'; + } + + if ($image eq 'defaults') { + $imgdefaults{$params{page}} = \%params; + return ''; + } + + add_link($params{page}, $image); + add_depends($params{page}, $image); + + # optimisation: detect scan mode, and avoid generating the image + if (! defined wantarray) { + return; + } + + my $file = bestlink($params{page}, $image); + my $srcfile = srcfile($file, 1); + if (! length $file || ! defined $srcfile) { + return htmllink($params{page}, $params{destpage}, $image); + } + + my $dir = $params{page}; + my $base = IkiWiki::basename($file); + my $extension; + my $format; + + if ($base =~ m/\.([a-z0-9]+)$/is) { + $extension = $1; + } + else { + error gettext("Unable to detect image type from extension"); + } + + # Never interpret well-known file extensions as any other format, + # in case the wiki configuration unwisely allows attaching + # arbitrary files named *.jpg, etc. + my $magic; + my $offset = 0; + open(my $in, '<', $srcfile) or error sprintf(gettext("failed to read %s: %s"), $file, $!); + binmode($in); + + if ($extension =~ m/^(jpeg|jpg)$/is) { + $format = 'jpeg'; + $magic = "\377\330\377"; + } + elsif ($extension =~ m/^(png)$/is) { + $format = 'png'; + $magic = "\211PNG\r\n\032\n"; + } + elsif ($extension =~ m/^(gif)$/is) { + $format = 'gif'; + $magic = "GIF8"; + } + elsif ($extension =~ m/^(svg)$/is) { + $format = 'svg'; + } + elsif ($extension =~ m/^(webp)$/is) { + $format = 'webp'; + } + elsif ($extension =~ m/^(pdf)$/is) { + $format = 'pdf'; + $magic = "%PDF-"; + } + else { + # allow ImageMagick to auto-detect (potentially dangerous) + my $im = Image::Magick->new(); + my $r = $im->Ping(file => $in); + if ($r) { + $format = lc $r; + } + else { + error sprintf(gettext("failed to determine format of %s"), $file); + } + } + + error sprintf(gettext("%s image processing disabled in img_allowed_formats configuration"), $format ? $format : "\"$extension\"") unless allowed($format ? $format : "everything"); + + # Try harder to protect ImageMagick from itself + if (defined $magic) { + my $content; + read($in, $content, length $magic) or error sprintf(gettext("failed to read %s: %s"), $file, $!); + if ($magic ne $content) { + error sprintf(gettext("\"%s\" does not seem to be a valid %s file"), $file, $format); + } + } + + my $ispdf = $base=~s/\.pdf$/.png/i; + my $pagenumber = exists($params{pagenumber}) ? int($params{pagenumber}) : 0; + if ($pagenumber != 0) { + $base = "p$pagenumber-$base"; + } + + my $imglink; + my $imgdatalink; + my ($dwidth, $dheight); + + my ($w, $h); + if ($params{size} ne 'full') { + ($w, $h) = ($params{size} =~ /^(\d*)x(\d*)$/); + } + + if ($format eq 'svg') { + # svg images are not scaled using ImageMagick because the + # pipeline is complex. Instead, the image size is simply + # set to the provided values. + # + # Aspect ratio will be preserved automatically when + # only a width or only a height is specified. + # When both are specified, aspect ratio will not be + # preserved. + $imglink = $file; + $dwidth = $w if length $w; + $dheight = $h if length $h; + } + else { + eval q{use Image::Magick}; + error gettext("Image::Magick is not installed") if $@; + my $im = Image::Magick->new(); + my $r = $im->Read("$format:$srcfile\[$pagenumber]"); + error sprintf(gettext("failed to read %s: %s"), $file, $r) if $r; + + if ($config{deterministic}) { + $im->Set('date:create' => 0); + $im->Set('date:modify' => 0); + $im->Set('option' => 'png:exclude-chunk=time'); + } + + if (! defined $im->Get("width") || ! defined $im->Get("height")) { + error sprintf(gettext("failed to get dimensions of %s"), $file); + } + + if (! length $w && ! length $h) { + $dwidth = $im->Get("width"); + $dheight = $im->Get("height"); + } else { + error sprintf(gettext('wrong size format "%s" (should be WxH)'), $params{size}) + unless (defined $w && defined $h && + (length $w || length $h)); + + if ($im->Get("width") == 0 || $im->Get("height") == 0) { + ($dwidth, $dheight)=(0, 0); + } elsif (! length $w || (length $h && $im->Get("height")*$w > $h * $im->Get("width"))) { + # using height because only height is given or ... + # because original image is more portrait than $w/$h + # ... slimness of $im > $h/w + # ... $im->Get("height")/$im->Get("width") > $h/$w + # ... $im->Get("height")*$w > $h * $im->Get("width") + + $dheight=$h; + $dwidth=$h / $im->Get("height") * $im->Get("width"); + } else { # (! length $h) or $w is what determines the resized size + $dwidth=$w; + $dheight=$w / $im->Get("width") * $im->Get("height"); + } + } + + if ($dwidth < $im->Get("width") || $ispdf) { + # resize down, or resize to pixels at all + + my $outfile = "$config{destdir}/$dir/$params{size}-$base"; + $imglink = "$dir/$params{size}-$base"; + + will_render($params{page}, $imglink); + + if (-e $outfile && (-M $srcfile >= -M $outfile)) { + $im = Image::Magick->new; + $r = $im->Read($outfile); + error sprintf(gettext("failed to read %s: %s"), $outfile, $r) if $r; + } + else { + $r = $im->Resize(geometry => "${dwidth}x${dheight}"); + error sprintf(gettext("failed to resize: %s"), $r) if $r; + + $im->set($ispdf ? (magick => 'png') : ()); + my @blob = $im->ImageToBlob(); + # don't actually write resized file in preview mode; + # rely on width and height settings + if (! $params{preview}) { + writefile($imglink, $config{destdir}, $blob[0], 1); + } + else { + eval q{use MIME::Base64}; + error($@) if $@; + $imgdatalink = "data:image/".$im->Get("magick").";base64,".encode_base64($blob[0]); + } + } + + # always get the true size of the resized image (it could be + # that imagemagick did its calculations differently) + $dwidth = $im->Get("width"); + $dheight = $im->Get("height"); + } else { + $imglink = $file; + } + + if (! defined($dwidth) || ! defined($dheight)) { + error sprintf(gettext("failed to determine size of image %s"), $file) + } + } + + my ($fileurl, $imgurl); + my $urltobase = $params{preview} ? undef : $params{destpage}; + $fileurl=urlto($file, $urltobase); + $imgurl=$imgdatalink ? $imgdatalink : urlto($imglink, $urltobase); + + if (! exists $params{class}) { + $params{class}="img"; + } + + my $attrs=''; + foreach my $attr (qw{alt title class id hspace vspace}) { + if (exists $params{$attr}) { + $attrs.=" $attr=\"$params{$attr}\""; + } + } + + my $imgtag=''; + + my $link; + if (! defined $params{link}) { + $link=$fileurl; + } + elsif ($params{link} =~ /^\w+:\/\//) { + $link=$params{link}; + } + + if (defined $link) { + $imgtag=''.$imgtag.''; + } + else { + my $b = bestlink($params{page}, $params{link}); + + if (length $b) { + add_depends($params{page}, $b, deptype("presence")); + $imgtag=htmllink($params{page}, $params{destpage}, + $params{link}, linktext => $imgtag, + noimageinline => 1, + ); + } + } + + if (exists $params{caption}) { + return ''. + ''. + ''. + '
'.$params{caption}.'
'.$imgtag.'
'; + } + else { + return $imgtag; + } +} + +1 diff --git a/plugins/IkiWiki/Plugin/sidebar2.pm b/plugins/IkiWiki/Plugin/sidebar2.pm new file mode 100644 index 0000000..5992f91 --- /dev/null +++ b/plugins/IkiWiki/Plugin/sidebar2.pm @@ -0,0 +1,214 @@ +#!/usr/bin/perl +package IkiWiki::Plugin::sidebar2; + +=head1 NAME + +IkiWiki::Plugin::sidebar2 - Improved version of IkiWiki::Plugin::sidebar + +=head1 VERSION + +This describes version B<0.1> of IkiWiki::Plugin::sidebar2 + +=cut + +our $VERSION = '0.1'; + +=head1 DESCRIPTION + +Improved version of IkiWiki::Plugin::sidebar2. Main features are: + +- allowing several sidebars; +- enabling sidebars using pagespects. + +See doc/plugins/sidebar2.mdwn for documentation. + +=head1 PREREQUISITES + +IkiWiki + +=head1 URL + +http://atelier.gresille.org/projects/gresille-ikiwiki/wiki/Sidebar2 +http://ikiwiki.info/plugins/contrib/sidebar2/ + +=head1 AUTHOR + +Tuomo Valkonen wrote the original Ikiwiki::plugin::sidebar. +Others (on http://ikiwiki.info) helped to improve it. +Louis Paternault (spalax) improved it to write Ikiwiki::plugin::sidebar2. + +=head1 COPYRIGHT + +Copyright 2006 Tuomo Valkonen +Copyright 2013 by Louis Paternault + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +=cut + +use warnings; +use strict; +use IkiWiki 3.00; + +sub import { + hook(type => "checkconfig", id => "sidebar2", call => \&checkconfig); + hook(type => "getsetup", id => "sidebar2", call => \&getsetup); + hook(type => "preprocess", id => "sidebar", call => \&preprocess); + hook(type => "pagetemplate", id => "sidebar2", call => \&pagetemplate); +} + +sub checkconfig () { + # Parsing "sidebars" + my %sidebars; + if (defined $config{global_sidebars} and (ref($config{global_sidebars}) eq "ARRAY")) { + my $length = $#{$config{global_sidebars}}+1; + if (($length % 3) != 0) { + error("'sidebars' length must be a multiple of 3."); + } + for(my $i=0; $i<$length/3;$i += 1) { + unless(exists($sidebars{$config{global_sidebars}[3*$i]})) { + $sidebars{$config{global_sidebars}[3*$i]} = (); + } + push( + @{$sidebars{$config{global_sidebars}[3*$i]}}, + @{[[ + $config{global_sidebars}[3*$i+1], + $config{global_sidebars}[3*$i+2], + ]]} + ); + } + } else { + if (not defined $config{global_sidebars}) { + $config{global_sidebars} = 1; + } + if (IkiWiki::yesno($config{global_sidebars})) { + %sidebars = ( + "sidebar" => [["sidebar", "*"]] + ); + } + } + + @{$config{sidebars}} = %sidebars; +} + +sub getsetup () { + return + plugin => { + safe => 1, + rebuild => 1, + }, + global_sidebars => { + type => "boolean", + example => 1, + description => "show sidebar page on all pages?", + safe => 1, + rebuild => 1, + }, +} + +my %pagesidebar; + +sub preprocess (@) { + my %params=@_; + + my $page=$params{page}; + return "" unless $page eq $params{destpage}; + + if (! defined $params{var}) { + $params{var} = "sidebar"; + } + if (! defined $params{content}) { + $pagesidebar{$page}{$params{var}}=undef; + } + else { + my $file = $pagesources{$page}; + my $type = pagetype($file); + + unless(exists($pagesidebar{$page})) { + $pagesidebar{$page} = (); + } + $pagesidebar{$page}{$params{var}} = IkiWiki::htmlize($page, $page, $type, + IkiWiki::linkify($page, $page, + IkiWiki::preprocess($page, $page, $params{content}))); + } + + return ""; +} + +my $oldfile; +my $oldcontent; + +sub sidebar_content ($$$$) { + my $templatevar=shift; + my $page=shift; + my $included=shift; + my $pagespec=shift; + + return delete $pagesidebar{$page}{$templatevar} if defined $pagesidebar{$page}{$templatevar}; + + return if ! exists $pagesidebar{$page}{$templatevar} && + ! pagespec_match($page, $pagespec) + ; + + my $sidebar_page=bestlink($page, $included) || return; + my $sidebar_file=$pagesources{$sidebar_page} || return; + my $sidebar_type=pagetype($sidebar_file); + + if (defined $sidebar_type) { + # FIXME: This isn't quite right; it won't take into account + # adding a new sidebar page. So adding such a page + # currently requires a wiki rebuild. + add_depends($page, $sidebar_page); + + my $content; + if (defined $oldfile && $sidebar_file eq $oldfile) { + $content=$oldcontent; + } + else { + $content=readfile(srcfile($sidebar_file)); + $oldcontent=$content; + $oldfile=$sidebar_file; + } + + return unless length $content; + return IkiWiki::htmlize($sidebar_page, $page, $sidebar_type, + IkiWiki::linkify($sidebar_page, $page, + IkiWiki::preprocess($sidebar_page, $page, + IkiWiki::filter($sidebar_page, $page, $content)))); + } + +} + +sub pagetemplate (@) { + my %params=@_; + + my $template=$params{template}; + my %sidebars = @{$config{sidebars}}; + if ($params{destpage} eq $params{page}) { + foreach my $templatevar (keys(%sidebars)) { + if ($template->query(name => $templatevar) and exists($sidebars{$templatevar})) { + for my $data (@{$sidebars{$templatevar}}) { + my $content=sidebar_content($templatevar, $params{destpage}, @{$data}[0], @{$data}[1]); + if (defined $content && length $content) { + $template->param($templatevar => $content); + last; + } + } + } + } + } +} + +1 diff --git a/recentchanges/index.html b/recentchanges/index.html deleted file mode 100644 index 091e8ef..0000000 --- a/recentchanges/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - RecentChanges - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Recent changes to this wiki:

- - - - - - - -
-
- - - - - - - - - diff --git a/sandbox/index.html b/sandbox/index.html deleted file mode 100644 index 558948a..0000000 --- a/sandbox/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sandbox - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This is the SandBox, a page anyone can edit to learn how to use the wiki.

- -
- -

Here's a paragraph.

- -

Here's another one with emphasised text.

- -

Header

- -

Subheader

- -
-

This is a blockquote.

- -

This is the first level of quoting.

- -
-

This is nested blockquote.

-
- -

Back to the first level.

-
- -

Numbered list

- -
    -
  1. First item.
  2. -
  3. Another.
  4. -
  5. And another..
  6. -
- -

Bulleted list

- -
    -
  • item
  • -
  • item
  • -
- -

WikiLink

- - - - -
-
- - - - - - - - - diff --git a/shortcuts/index.html b/shortcuts/index.html deleted file mode 100644 index 61b370e..0000000 --- a/shortcuts/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - shortcuts - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This wiki has shortcuts enabled.

- -

Some examples of using shortcuts include:

- -
[[!google  foo]]
-[[!wikipedia  War_of_1812]]
-[[!debbug  12345]]
-Check the [[!google  ikiwiki desc="google search for %s"]].
-
- -

This page controls what shortcut links the wiki supports.

- -
    -
  • shortcut google points to https://encrypted.google.com/search?q=%s
  • -
  • shortcut archive points to http://web.archive.org/*/%S
  • -
  • shortcut gmap points to https://maps.google.com/maps?q=%s
  • -
  • shortcut gmsg points to https://groups.google.com/groups?selm=%s
  • -
  • shortcut wikipedia points to https://en.wikipedia.org/wiki/%W
  • -
  • shortcut wikitravel points to https://wikitravel.org/en/%s
  • -
  • shortcut wiktionary points to https://en.wiktionary.org/wiki/%s
  • -
  • shortcut debbug points to http://bugs.debian.org/%S
  • -
  • shortcut deblist points to https://lists.debian.org/debian-%s
  • -
  • shortcut debpkg points to http://packages.debian.org/%s
  • -
  • shortcut debpkgsid points to http://packages.debian.org/sid/%s
  • -
  • shortcut debpts points to http://packages.qa.debian.org/%s
  • -
  • shortcut debmsg points to https://lists.debian.org/msgid-search/%s
  • -
  • shortcut debrt points to https://rt.debian.org/Ticket/Display.html?id=%s
  • -
  • shortcut debss points to http://snapshot.debian.org/package/%s/ -
  • -
  • shortcut debwiki points to https://wiki.debian.org/%S
  • -
  • shortcut debcve points to https://security-tracker.debian.org/tracker/%S -
      -
    • also supports Debian bug numbers, packages and whatever the security tracker supports.
    • -
  • -
  • shortcut fdobug points to https://bugs.freedesktop.org/show_bug.cgi?id=%s
  • -
  • shortcut fdolist points to http://lists.freedesktop.org/mailman/listinfo/%s
  • -
  • shortcut gnomebug points to https://bugzilla.gnome.org/show_bug.cgi?id=%s
  • -
  • shortcut linuxbug points to https://bugzilla.kernel.org/show_bug.cgi?id=%s
  • -
  • shortcut mozbug points to https://bugzilla.mozilla.org/show_bug.cgi?id=%s
  • -
  • shortcut gnulist points to https://lists.gnu.org/mailman/listinfo/%s
  • -
  • shortcut marcmsg points to http://marc.info/?i=%s
  • -
  • shortcut marclist points to http://marc.info/?l=%s
  • -
  • shortcut gmane points to http://dir.gmane.org/gmane.%s
  • -
  • shortcut gmanemsg points to http://mid.gmane.org/%s
  • -
  • shortcut cpan points to http://search.cpan.org/search?mode=dist&query=%s
  • -
  • shortcut ctan points to http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s
  • -
  • shortcut hoogle points to http://haskell.org/hoogle/?q=%s
  • -
  • shortcut iki points to http://ikiwiki.info/%S/
  • -
  • shortcut ljuser points to http://%s.livejournal.com/
  • -
  • shortcut rfc points to https://www.ietf.org/rfc/rfc%s.txt
  • -
  • shortcut c2 points to http://wiki.c2.com/?%s
  • -
  • shortcut meatballwiki points to http://www.usemod.com/cgi-bin/mb.pl?%s
  • -
  • shortcut emacswiki points to http://www.emacswiki.org/cgi-bin/wiki/%s
  • -
  • shortcut haskellwiki points to http://haskell.org/haskellwiki/%s
  • -
  • shortcut dict points to http://www.dict.org/bin/Dict?Form=Dict1&Strategy=&Database=&Query=%s
  • -
  • shortcut imdb points to http://imdb.com/find?q=%s
  • -
  • shortcut gpg points to http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s
  • -
  • shortcut perldoc points to http://perldoc.perl.org/search.html?q=%s
  • -
  • shortcut whois points to http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain
  • -
  • shortcut cve points to https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s
  • -
  • shortcut flickr points to https://secure.flickr.com/photos/%s
  • -
  • shortcut man points to http://manpages.debian.org/%s
  • -
  • shortcut ohloh points to https://www.ohloh.net/p/%s
  • -
  • shortcut cpanrt points to https://rt.cpan.org/Ticket/Display.html?id=%s
  • -
  • shortcut novellbug points to https://bugzilla.novell.com/show_bug.cgi?id=%s
  • -
  • shortcut ubupkg points to http://packages.ubuntu.com/%s
  • -
  • shortcut mozillazinekb points to http://kb.mozillazine.org/%s
  • -
  • shortcut freebsdwiki points to http://wiki.freebsd.org/%s
  • -
  • shortcut hackage points to http://hackage.haskell.org/package/%s
  • -
  • shortcut pkgsrc points to http://pkgsrc.se/%S
  • -
  • shortcut doi points to http://dx.doi.org/%s
  • -
  • shortcut arxiv points to http://arxiv.org/abs/%s
  • -
- -

To add a new shortcut, use the shortcut -directive. In the url, "%s" is replaced with the -text passed to the named shortcut, after url encoding -it, and '%S' is replaced with the raw, non-encoded text. -Additionally, %W is replaced with the text encoded just right for -Wikipedia. The optional desc parameter controls the description of -the link.

- -

Remember that the name you give the shortcut will become a new -directive. Avoid using a name that conflicts -with an existing directive. These directives also accept a desc -parameter that will override the one provided at definition time.

- -

If you come up with a shortcut that you think others might find useful, -consider contributing it to the shortcuts page on the ikiwiki -wiki, so that future versions of -ikiwiki will include your shortcut in the standard underlay.

- - - - -
-
- - - - - - - - - diff --git a/sidebar.html b/sidebar.html new file mode 100644 index 0000000..93727fb --- /dev/null +++ b/sidebar.html @@ -0,0 +1,4 @@ + + diff --git a/sidebar/index.html b/sidebar/index.html deleted file mode 100644 index 3c47f83..0000000 --- a/sidebar/index.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - sidebar - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
- - - - - - -
-
- - - - - - - - - diff --git a/smileys/alert.png b/smileys/alert.png deleted file mode 100644 index 5bb87e3..0000000 Binary files a/smileys/alert.png and /dev/null differ diff --git a/smileys/angry.png b/smileys/angry.png deleted file mode 100644 index 05bc69f..0000000 Binary files a/smileys/angry.png and /dev/null differ diff --git a/smileys/attention.png b/smileys/attention.png deleted file mode 100644 index 7e06456..0000000 Binary files a/smileys/attention.png and /dev/null differ diff --git a/smileys/biggrin.png b/smileys/biggrin.png deleted file mode 100644 index f71b42c..0000000 Binary files a/smileys/biggrin.png and /dev/null differ diff --git a/smileys/checkmark.png b/smileys/checkmark.png deleted file mode 100644 index 8869caa..0000000 Binary files a/smileys/checkmark.png and /dev/null differ diff --git a/smileys/devil.png b/smileys/devil.png deleted file mode 100644 index 8684c39..0000000 Binary files a/smileys/devil.png and /dev/null differ diff --git a/smileys/frown.png b/smileys/frown.png deleted file mode 100644 index 2999b55..0000000 Binary files a/smileys/frown.png and /dev/null differ diff --git a/smileys/icon-error.png b/smileys/icon-error.png deleted file mode 100644 index c39e65c..0000000 Binary files a/smileys/icon-error.png and /dev/null differ diff --git a/smileys/icon-info.png b/smileys/icon-info.png deleted file mode 100644 index c1b14f3..0000000 Binary files a/smileys/icon-info.png and /dev/null differ diff --git a/smileys/idea.png b/smileys/idea.png deleted file mode 100644 index 37bc02d..0000000 Binary files a/smileys/idea.png and /dev/null differ diff --git a/smileys/index.html b/smileys/index.html deleted file mode 100644 index b8fbf77..0000000 --- a/smileys/index.html +++ /dev/null @@ -1,175 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - smileys - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

This page is used to control what smileys are supported by the wiki. -Just write the text of a smiley to display it.

- -
    -
  • :) smile.png
  • -
  • :-) smile.png
  • -
  • :D biggrin.png
  • -
  • :-D biggrin.png
  • -
  • B) smile2.png
  • -
  • B-) smile2.png
  • -
  • :)) smile3.png
  • -
  • :-)) smile3.png
  • -
  • ;) smile4.png
  • -
  • ;-) smile4.png
  • -
  • :\ ohwell.png
  • -
  • :-\ ohwell.png
  • -
  • :/ ohwell.png
  • -
  • :-/ ohwell.png
  • -
  • :| neutral.png
  • -
  • :-| neutral.png
  • -
  • >:> devil.png
  • -
  • X-( angry.png
  • -
  • <:( frown.png
  • -
  • :( sad.png
  • -
  • :-( sad.png
  • -
  • :-? tongue.png
  • -
  • :-P tongue.png
  • -
  • :o redface.png
  • -
  • |) tired.png
  • -
  • |-) tired.png
  • -
  • {OK} thumbs-up.png
  • -
  • {X} icon-error.png
  • -
  • {i} icon-info.png
  • -
  • (./) checkmark.png
  • -
  • (!) idea.png
  • -
  • [!] attention.png
  • -
  • /!\ alert.png
  • -
  • (?) question.png
  • -
  • {x} star on.png
  • -
  • {*} star on.png
  • -
  • {o} star off.png
  • -
  • {1} prio1.png
  • -
  • {2} prio2.png
  • -
  • {3} prio3.png
  • -
- -

For example: {x} B) {x}

- -
- -

To change the supported smileys, just edit the lists on this page. -Note that the format is important; each list item should start with the -text that is turned into the smiley, escaped so that users can see what -produces it, followed by a WikiLink to the image to display.

- -

/!\ Bear in mind that the link to the image needs to be written in a way that -will work if it's copied to other pages on the wiki. So be sure to include the -smileys directory in the path to the file.

- - - - -
-
- - - - - - - - - diff --git a/smileys/neutral.png b/smileys/neutral.png deleted file mode 100644 index ddeb592..0000000 Binary files a/smileys/neutral.png and /dev/null differ diff --git a/smileys/ohwell.png b/smileys/ohwell.png deleted file mode 100644 index a83adfb..0000000 Binary files a/smileys/ohwell.png and /dev/null differ diff --git a/smileys/prio1.png b/smileys/prio1.png deleted file mode 100644 index 774d34d..0000000 Binary files a/smileys/prio1.png and /dev/null differ diff --git a/smileys/prio2.png b/smileys/prio2.png deleted file mode 100644 index 4528653..0000000 Binary files a/smileys/prio2.png and /dev/null differ diff --git a/smileys/prio3.png b/smileys/prio3.png deleted file mode 100644 index 84332ce..0000000 Binary files a/smileys/prio3.png and /dev/null differ diff --git a/smileys/question.png b/smileys/question.png deleted file mode 100644 index df22152..0000000 Binary files a/smileys/question.png and /dev/null differ diff --git a/smileys/redface.png b/smileys/redface.png deleted file mode 100644 index 9a87392..0000000 Binary files a/smileys/redface.png and /dev/null differ diff --git a/smileys/sad.png b/smileys/sad.png deleted file mode 100644 index 86a059d..0000000 Binary files a/smileys/sad.png and /dev/null differ diff --git a/smileys/smile.png b/smileys/smile.png deleted file mode 100644 index b51b3ff..0000000 Binary files a/smileys/smile.png and /dev/null differ diff --git a/smileys/smile2.png b/smileys/smile2.png deleted file mode 100644 index 43ea05f..0000000 Binary files a/smileys/smile2.png and /dev/null differ diff --git a/smileys/smile3.png b/smileys/smile3.png deleted file mode 100644 index c690ccc..0000000 Binary files a/smileys/smile3.png and /dev/null differ diff --git a/smileys/smile4.png b/smileys/smile4.png deleted file mode 100644 index f8f5b52..0000000 Binary files a/smileys/smile4.png and /dev/null differ diff --git a/smileys/star_off.png b/smileys/star_off.png deleted file mode 100644 index c5535c3..0000000 Binary files a/smileys/star_off.png and /dev/null differ diff --git a/smileys/star_on.png b/smileys/star_on.png deleted file mode 100644 index 969908d..0000000 Binary files a/smileys/star_on.png and /dev/null differ diff --git a/smileys/thumbs-up.png b/smileys/thumbs-up.png deleted file mode 100644 index 1faabac..0000000 Binary files a/smileys/thumbs-up.png and /dev/null differ diff --git a/smileys/tired.png b/smileys/tired.png deleted file mode 100644 index a3d5c56..0000000 Binary files a/smileys/tired.png and /dev/null differ diff --git a/smileys/tongue.png b/smileys/tongue.png deleted file mode 100644 index 6510540..0000000 Binary files a/smileys/tongue.png and /dev/null differ diff --git a/style.css b/style.css deleted file mode 100644 index 9f82899..0000000 --- a/style.css +++ /dev/null @@ -1,596 +0,0 @@ -/* ikiwiki style sheet */ - -/* Note that instead of modifying this style sheet, you can instead edit - * local.css and use it to override or change settings in this one. - */ - -/* html5 compat */ -article,aside,details,figcaption,figure, -footer,header,hgroup,menu,nav,section { - display: block; -} - -div.header, header.header { - margin: 0; - font-size: 140%; - font-weight: bold; - line-height: 1em; - display: block; -} - -.inlineheader .author { - margin: 0; - font-size: 112%; - font-weight: bold; - display: block; -} - -.actions ul { - margin: 0; - padding: 6px .4em; - height: 1em; - list-style-type: none; -} -.actions li { - display: inline; - padding: .2em; -} -.pageheader .actions ul { - border-bottom: 1px solid #000; -} - -.inlinepage .actions ul { - border-bottom: 0; -} - -#otherlanguages ul { - margin: 0; - padding: 6px; - list-style-type: none; -} -#otherlanguages li { - display: inline; - padding: .2em .4em; -} -.pageheader #otherlanguages { - border-bottom: 1px solid #000; -} - -.inlinecontent, -.inlineenclosure { - margin-top: .4em; -} - -.pagefooter, -.inlinefooter, -.comments { - clear: both; -} - -#pageinfo { - margin: 1em 0; - border-top: 1px solid #000; -} - -.tags { - margin-top: 1em; -} - -.inlinepage .tags { - display: inline; -} - -.mapparent { - text-decoration: none; -} - -.img caption { - font-size: 80%; - caption-side: bottom; - text-align: center; -} - -img.img { - margin: 0.5ex; -} - -.align-left { - float:left; -} - -.align-right { - float:right; -} - -#backlinks { - margin-top: 1em; -} - -#searchform { - display: inline; - float: right; -} - -#editcontent { - width: 98%; -} - -.editcontentdiv { - width: auto; - overflow: auto; -} - -img { - border-style: none; -} - -pre { - overflow: auto; -} - -div.recentchanges { - border-style: solid; - border-width: 1px; - overflow: auto; - width: auto; - clear: none; - background: #eee; - color: black !important; -} -.recentchanges .metadata { - padding: 0px 0.5em; -} -.recentchanges .changelog { - font-style: italic; - clear: both; - display: block; - padding: 1px 2px; - background: white !important; - color: black !important; -} -.recentchanges .desc { - display: none; -} -.recentchanges .diff { - display: none; -} -.recentchanges .committer { - float: left; - margin: 0; - width: 40%; -} -.recentchanges .committype { - float: left; - margin: 0; - width: 5%; - font-size: small; -} -.recentchanges .changedate { - float: left; - margin: 0; - width: 35%; - font-size: small; -} -.recentchanges .pagelinks, -.recentchanges .revert { - float: right; - margin: 0; - width: 60%; -} - -.blogform, #blogform { - padding: 10px 10px; - border: 1px solid #aaa; - background: #eee; - color: black !important; - width: auto; - overflow: auto; -} - -.inlinepage { - padding: 10px 10px; - border: 1px solid #aaa; - overflow: auto; -} - -.pagedate, -.pagelicense, -.pagecopyright { - font-style: italic; - display: block; - margin-top: 1em; -} - -.archivepagedate { - font-style: italic; -} -.archivepage { - margin-bottom: 1em; -} - -.error { - color: #C00; -} - -.sidebar { - width: 20ex; - float: right; - margin-left: 4px; - margin-bottom: 4px; - margin-top: -1px; - padding: 0ex 2ex; - background: white; - border: 1px solid black; - color: black !important; -} - -hr.poll { - height: 10pt; - color: white !important; - background: #eee; - border: 2px solid black; -} -div.poll { - margin-top: 1ex; - margin-bottom: 1ex; - padding: 1ex 1ex; - border: 1px solid #aaa; -} - -span.color { - padding: 2px; -} - -.comment-header, -.microblog-header { - font-style: italic; - margin-top: .3em; -} -.comment .author, -.microblog .author { - font-weight: bold; -} -.comment-subject { - font-weight: bold; -} -.comment-avatar { - float: right; -} -.comment { - border: 1px solid #aaa; - padding: 3px; -} - -div.progress { - margin-top: 1ex; - margin-bottom: 1ex; - border: 1px solid #888; - width: 400px; - background: #eee; - color: black !important; - padding: 1px; -} -div.progress-done { - background: #ea6 !important; - color: black !important; - text-align: center; - padding: 1px; -} - -/* things to hide in printouts */ -@media print { - .actions { display: none; } - .tags { display: none; } - .trails { display: none; } - .feedbutton { display: none; } - #searchform { display: none; } - .blogform, #blogform { display: none; } - #backlinks { display: none; } - .addcomment { display: none; } -} - -/* infobox template */ -.infobox { - float: right; - margin-left: 2ex; - margin-top: 1ex; - margin-bottom: 1ex; - padding: 1ex 1ex; - border: 1px solid #aaa; - background: white; - color: black !important; -} - -/* notebox template */ -.notebox { - float: right; - margin-left: 2ex; - margin-top: 1ex; - margin-bottom: 1ex; - padding: 1ex 1ex; - border: 1px solid #aaa; - width: 25%; - background: white; - color: black !important; -} - -/* popup template and backlinks hiding */ -.popup { - border-bottom: 1px dotted #366; - color: #366; -} -.popup .balloon, -.popup .paren, -.popup .expand { - display: none; - text-align: left; -} -.popup:hover .balloon, -.popup:focus .balloon { - position: absolute; - display: inline; - margin: 1em 0 0 -2em; - padding: 0.625em; - border: 2px solid; - background-color: #dee; - color: black; -} - -/* form styling */ -fieldset { - margin: 1ex 0; - border: 1px solid black; -} -legend { - padding: 0 1ex; -} -.fb_submit { - float: left; - margin: 2px 0; -} -label.block { - display: block; -} -label.inline { - display: inline; -} -input#openid_identifier { - background: url(wikiicons/openidlogin-bg.gif) no-repeat; - background-color: #fff; - background-position: 0 50%; - color: #000; - padding-left: 18px; -} -input#searchbox { - background: url(wikiicons/search-bg.gif) no-repeat; - background-color: #fff; - background-position: 100% 50%; - color: #000; - padding-right: 16px; -} -/* invalid form fields */ -.fb_invalid { - color: red; - background: white !important; -} -/* required form fields */ -.fb_required { - font-weight: bold; -} - -/* highlight plugin */ -pre.hl { color:#000000; background-color:#ffffff; } -.hl.num { color:#2928ff; } -.hl.esc { color:#ff00ff; } -.hl.str { color:#ff0000; } -.hl.dstr { color:#818100; } -.hl.slc { color:#838183; font-style:italic; } -.hl.com { color:#838183; font-style:italic; } -.hl.dir { color:#008200; } -.hl.sym { color:#000000; } -.hl.line { color:#555555; } -.hl.mark { background-color:#ffffbb; } -.hl.kwa { color:#000000; font-weight:bold; } -.hl.kwb { color:#830000; } -.hl.kwc { color:#000000; font-weight:bold; } -.hl.kwd { color:#010181; } - -/* calendar plugin */ -.month-calendar-day-this-day, -.year-calendar-this-month { - background-color: #eee; -} -.month-calendar-day-head, -.month-calendar-day-nolink, -.month-calendar-day-link, -.month-calendar-day-this-day, -.month-calendar-day-future { - text-align: right; -} -.month-calendar-arrow A:link, -.year-calendar-arrow A:link, -.month-calendar-arrow A:visited, -.year-calendar-arrow A:visited { - text-decoration: none; - font-weight: normal; - font-size: 150%; -} - -/* outlines */ -li.L1 { list-style: upper-roman; } -li.L2 { list-style: decimal; } -li.L3 { list-style: lower-alpha; } -li.L4 { list-style: disc; } -li.L5 { list-style: square; } -li.L6 { list-style: circle; } -li.L7 { list-style: lower-roman; } -li.L8 { list-style: upper-alpha; } - -/* tag cloud */ -.pagecloud { - float: right; - width: 30%; - text-align: center; - padding: 10px 10px; - border: 1px solid #aaa; - background: #eee; - color: black !important; -} -.smallestPC { font-size: 70%; } -.smallPC { font-size: 85%; } -.normalPC { font-size: 100%; } -.bigPC { font-size: 115%; } -.biggestPC { font-size: 130%; } - -/* orange feed button */ -.feedbutton { - background: #ff6600; - color: white !important; - border-left: 1px solid #cc9966; - border-top: 1px solid #ccaa99; - border-right: 1px solid #993300; - border-bottom: 1px solid #331100; - padding: 0px 0.5em 0px 0.5em; - font-family: sans-serif; - font-weight: bold; - font-size: small; - text-decoration: none; - margin-top: 1em; -} -.feedbutton:hover { - color: white !important; - background: #ff9900; -} - -.FlattrButton { - display: none; -} - -/* login selector */ -#login_choice { - display: none; -} -#login_input_area { - clear: both; - padding: 10px; -} -#login_btns, #login_btns br { - clear: both; -} -#login_highlight { - background-color: black; - float: left; -} -.login_large_btn { - padding: 1em 1.5em; - border: 1px solid #DDD; - margin: 3px; - float: left; -} -.login_small_btn { - padding: 4px 4px; - border: 1px solid #DDD; - margin: 3px; - float: left; -} -a.login_large_btn:focus { - outline: none; -} -a.login_large_btn:focus { - outline-style: none; -} -.login_selected { - border: 4px solid #DDD; -} - -.fileupload-content .ui-progressbar { - width: 200px; - height: 20px; -} -.fileupload-content .ui-progressbar-value { - background: url(ikiwiki/images/pbar-ani.gif); -} - -.trails { - margin-top: 1em; - margin-bottom: 1em; -} -.trail { - display: block; - clear: both; - position: relative; -} - -.trailprev { - display: block; - text-align: left; - position: absolute; - top: 0%; - left: 3%; - width: 30%; -} - -.trailup { - display: block; - text-align: center; - margin-left: 35%; - margin-right: 35%; -} - -.trailnext { - display: block; - text-align: right; - position: absolute; - top: 0%; - width: 30%; - right: 3%; -} - -.trailsep { - display: none; -} - -/* mobile/small-screen-friendly layout */ -@media (max-width: 600px) { - .sidebar { - width: auto; - float: none; - margin-top: 0; - border: none; - } - - /* if the mobile browser is new enough, use flex layout to shuffle - * the sidebar to the end */ - .page { - display: -webkit-box; - display: -webkit-flexbox; - display: -webkit-flex; - display: -moz-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-flex-direction: tb; - -webkit-flex-direction: column; - -webkit-flex-flow: column; - -ms-flex-direction: column; - flex-direction: column; - } - #pageheader { - -webkit-box-ordinal-group: -1; - -webkit-order: -1; - -ms-box-ordinal-group: -1; - -ms-flex-order: -1; - order: -1; - } - .sidebar, #footer { - -webkit-box-ordinal-group: 1; - -webkit-order: 1; - -ms-box-ordinal-group: 1; - -ms-flex-order: 1; - order: 1; - } - - .blogform, #blogform { - padding: 4px 4px; - } -} diff --git a/templates/index.html b/templates/index.html deleted file mode 100644 index 3502179..0000000 --- a/templates/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - templates - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Ikiwiki uses many templates for many purposes. By editing its templates, -you can fully customise its appearance, and avoid duplicate content.

- -

Ikiwiki uses the HTML::Template module as its template engine. This -supports things like conditionals and loops in templates and is pretty -easy to learn. All you really need to know to modify templates is this:

- -
    -
  • To insert the value of a template variable, use <TMPL_VAR variable>.
  • -
  • To make a block of text conditional on a variable being set use -<TMPL_IF variable>text</TMPL_IF>.
  • -
  • To use one block of text if a variable is set and a second if it's not, -use <TMPL_IF variable>text<TMPL_ELSE>other text</TMPL_IF>
  • -
- -

template pages

- -

Template pages are regular wiki pages containing a -templatebody directive, -used as templates for other pages. The parts of the template -page outside the directive can be used to document it.

- -

The template directive allows -template pages to be filled out and inserted into other pages in the wiki.

- -

These template pages are currently available:

- -

- -note - -

-

- -popup - -

- - -

If the template does not contain a templatebody directive, the entire -source of the page is used for the template. This is deprecated.

- -

template files

- -

Template files are unlike template pages in that they have the extension -.tmpl. Template files are used extensively by Ikiwiki to generate html. -They can contain html that would not normally be allowed on a wiki page.

- -

Template files are located in /usr/share/ikiwiki/templates by default; -the templatedir setting can be used to make another directory be -searched first. Customised template files can also be placed inside the -"templates/" directory in your wiki's source -- files placed there override -ones in the templatedir.

- -

Here is a full list of the template files used:

- -
    -
  • page.tmpl - Used for displaying all regular wiki pages. This is the -key template to customise to change the look and feel of Ikiwiki.

  • -
  • rsspage.tmpl - Used for generating rss feeds for blogs.

  • -
  • rssitem.tmpl - Used for generating individual items on rss feeds.
  • -
  • atompage.tmpl - Used for generating atom feeds for blogs.
  • -
  • atomitem.tmpl - Used for generating individual items on atom feeds.
  • -
  • inlinepage.tmpl - Used for displaying a post in a blog.
  • -
  • archivepage.tmpl - Used for listing a page in a blog archive page.
  • -
  • titlepage.tmpl - Used for listing a page by title in a blog archive page.
  • -
  • microblog.tmpl - Used for showing a microblogging post inline.
  • -
  • blogpost.tmpl - Used for a form to add a post to a blog (and rss/atom links)
  • -
  • feedlink.tmpl - Used to add rss/atom links if blogpost.tmpl is not used.
  • -
  • aggregatepost.tmpl - Used by the aggregate plugin to create -a page for a post.
  • -
  • searchform.tmpl, googleform.tmpl - Used by the search plugin -and google plugin to add search forms to wiki pages.
  • -
  • searchquery.tmpl - This is a Omega template, used by the -search plugin.
  • -
  • comment.tmpl - Used by the comments plugin to display a comment.
  • -
  • change.tmpl - Used to create a page describing a change made to the wiki.
  • -
  • recentchanges.tmpl - Used for listing a change on the RecentChanges page.
  • -
  • autoindex.tmpl - Filled in by the autoindex plugin to make index pages.
  • -
  • autotag.tmpl - Filled in by the tag plugin to make tag pages.
  • -
  • calendarmonth.tmpl, calendaryear.tmpl - Used by ikiwiki-calendar to -make calendar archive pages.
  • -
  • trails.tmpl - Used by the trail plugin to generate links on each page -that is a member of a trail.
  • -
  • notifyemail.tmpl - Used by the notifymail plugin to generate mails about -changed pages.
  • -
  • editpage.tmpl, editconflict.tmpl, editcreationconflict.tmpl, -editfailedsave.tmpl, editpagegone.tmpl, pocreatepage.tmpl, -editcomment.tmpl commentmoderation.tmpl, renamesummary.tmpl, -passwordmail.tmpl, emailauth.tmpl, login-selector.tmpl, -revert.tmpl - Parts of ikiwiki's user interface; do not normally need -to be customised.
  • -
- - - - -
-
- - - - - - - - - diff --git a/templates/note/index.html b/templates/note/index.html deleted file mode 100644 index 9c5dc51..0000000 --- a/templates/note/index.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - note - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Use this template to insert a note into a page. The note will be styled to -float to the right of other text on the page. This template has one -parameter:

- -
    -
  • `text` - the text to display in the note -
- - - - -
-
- - - - - - - - - diff --git a/templates/popup/index.html b/templates/popup/index.html deleted file mode 100644 index 12d8415..0000000 --- a/templates/popup/index.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - popup - GRIP-UQAM - - - - - - - - - - - - - - - - - - - - - -
- -
- -
-
-

Use this template to create a popup window that is displayed when the mouse -is over part of the page. This template has two parameters:

- -
    -
  • `mouseover` - This is the text or other content that triggers the -popup. -
  • `popup` - This should be the content of the popup window. It can be -anything, even images or a whole little wiki page, but should not be too -large for good usability. -
- -

Note that browsers that do not support the CSS will display the popup -inline in the page, inside square brackets.

- - - - -
-
- - - - - - - - - diff --git a/tools/test-server.sh b/tools/test-server.sh new file mode 100755 index 0000000..cdbe7b1 --- /dev/null +++ b/tools/test-server.sh @@ -0,0 +1,40 @@ +#!/usr/bin/env bash + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +for i in node npm git; do + if ! command -v $i &> /dev/null; then + echo ">> $i could not be found, please install" + exit + fi +done + +# http-server not pulled, pulling +if [ ! -d "$SCRIPT_DIR/http-server" ]; then + echo ">> This script will pull a lightweight nodejs http-server from https://github.com/http-party/http-server and make ./public avaiable as local http service, are you okay with this?" + read -p "Continue (y/n)?" choice + case "$choice" in + y|Y ) echo "yes";; + n|N ) echo "no";; + * ) echo "invalid";; + esac + git clone https://github.com/http-party/http-server +fi + +# http-server depends not pulled, pulling +if [ ! -d "$SCRIPT_DIR/http-server/node_modules/" ]; then + echo ">> http-server dependencies not pulled, pulling" + npm --prefix "$SCRIPT_DIR"/http-server i +fi + +# website not built, building +if [ ! -d "$SCRIPT_DIR/../public" ]; then + echo ">> website not build, building" + pushd "$SCRIPT_DIR"/.. + ikiwiki --setup ./ikiwiki.setup + popd +fi + +# starting server +echo ">> starting http server" +node "$SCRIPT_DIR"/http-server/bin/http-server -c-1 "$SCRIPT_DIR"/../public diff --git a/wikiicons/diff.png b/wikiicons/diff.png deleted file mode 100644 index 0b98d79..0000000 Binary files a/wikiicons/diff.png and /dev/null differ diff --git a/wikiicons/email.png b/wikiicons/email.png deleted file mode 100644 index 859251f..0000000 Binary files a/wikiicons/email.png and /dev/null differ diff --git a/wikiicons/openidlogin-bg.gif b/wikiicons/openidlogin-bg.gif deleted file mode 100644 index a3bfe10..0000000 Binary files a/wikiicons/openidlogin-bg.gif and /dev/null differ diff --git a/wikiicons/revert.png b/wikiicons/revert.png deleted file mode 100644 index c39e65c..0000000 Binary files a/wikiicons/revert.png and /dev/null differ diff --git a/wikiicons/search-bg.gif b/wikiicons/search-bg.gif deleted file mode 100644 index 02f9da4..0000000 Binary files a/wikiicons/search-bg.gif and /dev/null differ