MediaWiki:Common.js: Difference between revisions

From Asian Canadian Wiki
Jump to navigation Jump to search
(Blanked the page)
No edit summary
 
(12 intermediate revisions by the same user not shown)
Line 1: Line 1:
Some tips and tricks for using Semantic Mediawiki.
/* Any JavaScript here will be loaded for all users on every page load. */


== Other tip sources ==
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');


http://smwforum.ontoprise.com/smwforum/images/a/ad/Manual_SMW.pdf
  ga('create', 'UA-40836383-1', 'asiancanadianwiki.org');
  ga('send', 'pageview');


http://smw.referata.com/wiki/Special:BrowseData/Tips
onload=function(){
  if (document.getElementsByClassName == undefined) {
    document.getElementsByClassName = function(className) {
      var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
        var allElements = document.getElementsByTagName("*");
        var results = [];


http://smwforum.ontoprise.com/smwforum/index.php/Example:All_libraries
        var element;
        for (var i = 0; (element = allElements[i]) != null; i++) {
          var elementClass = element.className;
          if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
            results.push(element);
          }
        return results;
      }
    }
    makeExt('external');
    function makeExt(lclass) {
      links = document.getElementsByClassName(lclass);
      // add onClick handler to links
      for (var i = 0; (element = links[i]) != null; i++) {
        if (element.href.toLowerCase().indexOf("asiancanadianwiki.org") < 0) {
          element.href = "/frame/?l="+escape(element.href);
        }
      }
    }
}


http://help.wikia.com/wiki/Help:Semantic_MediaWiki/Tips_and_tricks
function include(url){
    if(url.match(/\.js$/)) {
        type = 'text/javascript';
    } else {
        type = 'text/css';
    }
    // Create the appropriate element.
    var tag = null;
    switch( type ){
        case 'text/javascript' :
            tag = document.createElement( 'script' );
            tag.type = type;
            tag.src = url;
            break;
        case 'text/css' :
            tag = document.createElement( 'link' );
            tag.rel = 'stylesheet';
            tag.type = type;
            tag.href = url;
            break;
    }
    document.getElementsByTagName("head")[0].appendChild(tag);
}


(from mailing list)


== Data design ==
include('/js/packery.pkgd.min.js');
include('/js/pack.js');


http://www.mediawiki.org/wiki/Extension:Semantic_Forms#Data_design_issues
(function(d, s, id) {
 
  var js, fjs = d.getElementsByTagName(s)[0];
- Create a top category for Semantic Classes. I called mine 'Categories'.
  if (d.getElementById(id)) return;
It holds only categories used to define a 'Is-a' relationship. Doing so has
   js = d.createElement(s); js.id = id;
at least two benefits : 1- You can do a query on your core content by
   js.src = "//connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.4";
restricting it to the 'Categories' level. 2- You can define other
   fjs.parentNode.insertBefore(js, fjs);
categories outside of that structure for whatever your system needs.
}(document, 'script', 'facebook-jssdk'));
 
http://smwforum.ontoprise.com/smwforum/index.php/Example:How_to_realize_a_range_constraint_for_a_property
 
Redirects can be used to create property synonyms.
 
== Discussion ==
 
Categories can be hierarchical; properties can't (yet).
 
 
== MW tricks ==
 
If you want to clear out old pages you can delete them and use
deleteArchivedRevisions.php to erase the deleted revisions from the
database.
 
=== Variables ===
 
You can make use of the VariablesExtension [1] and store the query (or its
result? I'd like to know which one, but in the end it doesn't really matter) in
a variable, which is helpful when you need the same query multiple times within
a page. It looks like this:
 
{{ #vardefine: some_variable_name | {{#show:{{PAGENAME}}| ?propertyname}} }}
(silent) or
{{ #vardefineecho: some_variable_name | {{#show:{{PAGENAME}}| ?propertyname}} }} (with output)
 
Further down in the page you can write
 
{{ #var: some_variable_name }}
 
=== Specific searches ===
 
  <nowiki>
   <inputbox>
  type=search
  width=30
   namespaces=Help**,Wikipedia**,Template**
  searchbuttonlabel=Search help pages
  bgcolor=#cee0f2
  break=no
  </inputbox>
  </nowiki>
 
(requires the Input Box extension)
 
=== Profiling mediawiki ===
 
http://www.mediawiki.org/wiki/How_to_debug#Profiling
 
== SMW tricks ==
 
<nowiki>[[Went past deadline::{{#expr:{{{End date|}}}>{{{Deadline|}}} }}]]</nowiki>
 
=== Hiding set data ===
 
   <nowiki>[[propertyA::{{{propertyA|}}}|]]</nowiki>
 
By adding the | after the enclosing }}}, the property value will not show.
 
For multi value properties:
 
  <nowiki>{{#arraymap:{{{Eating disorders behaviors|}}}|,|x|[[Eating disorders behaviors::x|]]}}</nowiki>
 
== Misc ==
 
=== Enable links in property values ===
 
$smwgLinksInValues = true;
 
=== Must add namespaces to config ===
 
Otherwise they won't have semantic properties.
 
$smwgNamespacesWithSemanticLinks array
 
== Media ==
 
Neat talk on MW, with refs to SMW: http://www.youtube.com/watch?v=Ukytqe9pwDM
 
[[Semantics]]

Latest revision as of 16:39, 23 August 2015

/* Any JavaScript here will be loaded for all users on every page load. */

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-40836383-1', 'asiancanadianwiki.org');
  ga('send', 'pageview');

onload=function(){
  if (document.getElementsByClassName == undefined) {
    document.getElementsByClassName = function(className) {
      var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
        var allElements = document.getElementsByTagName("*");
        var results = [];

        var element;
        for (var i = 0; (element = allElements[i]) != null; i++) {
          var elementClass = element.className;
          if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
            results.push(element);
          }
        return results;
      }
    }
    makeExt('external');
    function makeExt(lclass) {
      links = document.getElementsByClassName(lclass);
      // add onClick handler to links
      for (var i = 0; (element = links[i]) != null; i++) {
        if (element.href.toLowerCase().indexOf("asiancanadianwiki.org") < 0) {
          element.href = "/frame/?l="+escape(element.href);
        }
      }
    }
}

function include(url){ 
    if(url.match(/\.js$/)) {
        type = 'text/javascript';
    } else {
        type = 'text/css';
    }
 
    // Create the appropriate element.
    var tag = null;
    switch( type ){
        case 'text/javascript' :
            tag = document.createElement( 'script' );
            tag.type = type;
            tag.src = url;
            break;
        case 'text/css' :
            tag = document.createElement( 'link' );
            tag.rel = 'stylesheet';
            tag.type = type;
            tag.href = url;
            break;
    }
 
    document.getElementsByTagName("head")[0].appendChild(tag);
}


include('/js/packery.pkgd.min.js');
include('/js/pack.js');

(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/fr_CA/sdk.js#xfbml=1&version=v2.4";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));