Difference between revisions of "MediaWiki:ImageAnnotatorConfig.js"

From B.E.R.T. Wiki

(Created page with "// <source lang="javascript"> /* Site-wide configurations and start of the ImageAnnotator gadget. Split into a separate file for three reasons: 1. It separates the con...")
 
 
(No difference)

Latest revision as of 17:35, 26 April 2018

// <source lang="javascript">

/*

 Site-wide configurations and start of the ImageAnnotator gadget. Split into a
 separate file for three reasons:
 1. It separates the configuration from the core code, while still
 2. making it impossible for someone else (e.g. a malicious user) to override these
    defaults, and
 3. makes configuration changes available quickly: clients cache this file for four hours.

 Author: User:Lupo, September 2009
 License: Quadruple licensed GFDL, GPL, LGPL and Creative Commons Attribution 3.0 (CC-BY-3.0)

 Choose whichever license of these you like best :-)

 See https://commons.wikimedia.org/wiki/Help:Gadget-ImageAnnotator for documentation.
  • /

(function () {

 // Global settings. Edit these to configure ImageAnnotator for your Wiki. Note: these configurations
 // are here to prevent them to be overwritten by a user in his or her user scripts. BE EXTRA CAREFUL
 // IF YOU CHANGE THESE SETTINGS WHEN ImageAnnotator IS ALREADY DEPLOYED! Syntax or other errors here
 // may break ImageAnnotator for everyone!
 var config = {
   // By default, ImageAnnotator is enabled in all namespaces (except "Special", -1) for everyone,
   // except on the project's main page.
   // Here, you can define a list of namespaces where it is additionally disabled.
   viewingEnabled : function () {
     var action = mw.config.get('wgAction');
     return mw.config.get('wgNamespaceNumber') >= 0
            && !mw.config.get('wgIsMainPage')
            && (action == 'view' || action == 'purge' || action == 'submit'); 
   },
   // For instance, to disable ImageAnnotator on all talk pages, replace the function body above by
   //     return (wgNamespaceNumber & 1) == 0;
   // Or, to disable it in the category namespace and on article talk pages, you could use
   //     return (wgNamespaceNumber != 14) && (wgNamespaceNumber != 1);
   // To enable viewing only on file description pages and on pages in the project namespace:
   //     return (wgNamespaceNumber == 6) || (wgNamespaceNumber == 4);
   // To enable viewing only for logged-in users, use
   //     return wgUserName !== null;
   // To switch off viewing of notes on the project's main page, use
   //     return !wgIsMainPage;
   // By default, editing is enabled for anyone on the file description page or the page that contains
   // the substitution of template ImageWithNotes. Here, you can restrict editing even more, for
   // instance by allowing only autoconfirmed users to edit notes through ImageAnnotator. Note that
   // editing is only allowed if viewing is also allowed.
   editingEnabled : function ()
   {
     var action = mw.config.get('wgAction');
     var nsNum  = mw.config.get('wgNamespaceNumber');
     var pageView = (action == 'view' || action == 'purge')
                    && location.href.search(/[?&](diff|oldid)=/) < 0;
     if (!pageView) return false;
     if (   (nsNum == 2 || nsNum == 3)
         && mw.config.get('wgUserName') && mw.config.get('wgTitle').replace(/ /g, '_').indexOf(mw.config.get('wgUserName').replace (/ /g, '_')) === 0
        ) {
       // Allow anyone to edit notes in their own user space (sandboxes!)
       return true;
     }
     // Otherwise restrict editing of notes to autoconfirmed users.
     return (mw.config.get('wgUserGroups').join (' ') + ' ').indexOf ('confirmed ') >= 0; // Confirmed and autoconfirmed
     
   },
   // To allow only autoconfirmed users to edit, use
   //     return (' ' + wgUserGroups.join (' ') + ' ').indexOf (' autoconfirmed ') >= 0;
   // The following example restricts editing on file description pages to autoconfirmed users,
   // and otherwise allows edits only on subpages in the project namespace (for instance, featured
   // image nominations...), but allows editing there for anyone.
   //     return (   (   wgNamespaceNumber == 6
   //                 && (' ' + wgUserGroups.join(' ') + ' ').indexOf(' autoconfirmed ') >= 0
   //                )
   //             || (wgNamespaceNumber == 4 && wgPageName.indexOf('/') > 0)
   //            );
   // Note that wgUserName is null for IPs.
   // If editing is allowed at all, may the user remove notes through the ImageAnnotator interface?
   // (Note that notes can be removed anyway using a normal edit to the page.)
   mayDelete: function () {
     return true;
   },
   // If the user may delete notes, may he or she delete with an empty deletion reason?
   emptyDeletionReasonAllowed: function () {
     var groups = ' ' + mw.config.get('wgUserGroups').join(' ') + ' ';
     return groups.indexOf(' sysop ') >= 0 || groups.indexOf(' rollbacker ') >= 0;
   },
   // If the user may delete, may he or she bypass the prompt for a deletion reason by setting
   // var ImageAnnotator_noDeletionPrompt = true;
   // in his or her user scripts?
   mayBypassDeletionPrompt : function ()
   {
     return (' ' + mw.config.get('wgUserGroups').join(' ') + ' ').indexOf(' sysop ') >= 0;
   },
   // If viewing is enabled at all, you can specify here whether viewing notes on thumbnails (e.g.,
   // in articles) is switched on. Logged-in users can augment this by disabling viewing notes on
   // thumbnails on a per-namespace basis using the global variable ImageAnnotator_no_thumbs.
   thumbsEnabled : function ()
   {
     return true;
   },
   // For instance, to switch off viewing of notes on thumbnails for IPs in article space, you'd use
   //     return !(namespaceNumber == 0 && wgUserName === null);
   // If viewing is enabled at all, you can define whether viewing notes on non-thumbnail images is
   // switched on. Logged-in users can augment this by disabling viewing notes on non-thumbnails
   // on a per-namespace basis using the global variable ImageAnnotator_no_images.
   generalImagesEnabled: function () {
     return true;
   },
   // If thumbs or general images are enabled, you can define whether this shall apply only to local
   // images (return false) or also to images that reside at the shared repository (the Commons). In
   // the 'File:' namespace, displaying notes on shared images is always enabled. (Provided viewing
   // notes is enabled at all there. If you've disabled viewing notes in all namespaces including
   // the 'File:' namespace for non-logged-in users, they won't see notes on images from the Commons
   // either, even if you enable it here.)
   sharedImagesEnabled: function () {
     return true;
   },
   // If thumbs or general images are enabled, you can define here whether you want to allow the
   // script to  display the notes or just a little indicator (an icon in the upper left--or right
   // on rtl wikis--corner of the image). The parameters given are
   //   name         string
   //     the name of the image, starting with "File:"
   //   is_local     boolean
   //     true if the image is local, false if it is from the shared repository
   //   thumb        object {width: integer, height: integer}
   //     Size of the displayed image in the article, in pixels
   //   full_img     object {width: integer, height: integer}
   //     Size of the full image as uploaded, in pixels
   //   nof_notes    integer 
   //     Number of notes on the image
   //   is_thumbnail boolean
   //     true if the image is a thumbnail, false otherwise
   inlineImageUsesIndicator : function (name, is_local, thumb, full_img, nof_notes, is_thumbnail)
   {
     // Of course you could also use wgNamespace or any other of the wg-globals here.
     return    (is_thumbnail && !is_local)
            || ((   thumb.width < 250 && thumb.height < 250
                 && (thumb.width < full_img.width || thumb.height < full_img.height)
                )
                  ? nof_notes > 10 : false
               );
     // This default displays only an indicator icon for non-local thumbnails,
     // and for small images that are scaled down, but have many notes
   },
   // If notes are displayed on an image included in an article, ImageAnnotator normally adds a
   // caption indicating the presence of notes. If you want to suppress this for all images included
   // in articles, return false. To suppress the caption only for thumbnails, but not for otherwise
   // included images, return !is_thumbnail. To suppress the caption for all images but thumbnails,
   // return is_thumbnail. The parameters are the same as for the function inlineImageUsesIndicator
   // above.
   displayCaptionInArticles : function (name, is_local, thumb, full_img, nof_notes, is_thumbnail)
   {
     return true;
   },
   // Different wikis may have different image setups. For the Wikimedia projects, the image
   // servers are set up to generate missing thumbnails on the fly, so we can just construct
   // a valid thumbnail url to get a thumbnail, even if there isn't one of that size yet.
   // Return true if your wiki has a similar setup. Otherwise, return false.
   thumbnailsGeneratedAutomatically : function ()
   {
     return true;
   },
   // Determine whether an image is locally stored or comes from a central repository. For wikis
   // using the Commons as their central repository, this should not need changing.
   imageIsFromSharedRepository : function (img_url)
   {
     return mw.config.get('wgServer').indexOf('/commons') < 0 && img_url.indexOf('/commons') >= 0;
   },
   // Return the URL of the API at the shared file repository. Again, for wikis using the Commons
   // as their central repository, this should not need changing. If your wiki is accessible through
   // https, it's a good idea to also make the shared repository accessible through https and return
   // that secure URL here to avoid warnings about accessing a non-secure site from a secure site.
   sharedRepositoryAPI : function ()
   {
     return '//commons.wikimedia.org/w/api.php';
   },
   // Default coloring. Each note's rectangle has an outer and an inner border.
   outer_border  : '#666666', // Gray
   inner_border  : 'yellow',
   active_border : '#FFA500', // Orange, for highlighting the rectangle of the active note
   new_border    : 'red',     // For drawing rectangles
   // Default threshold for activating the zoom (can be overridden by users).
   zoom_threshold : 8.0,
   UI : {
     defaultLanguage : mw.config.get('wgContentLanguage'), // Don't change this!
     // Translate the texts below into the wgContentLanguage of your wiki. These are used as
     // fallbacks if the localized UI cannot be loaded from the server.
     defaults: {
        wpImageAnnotatorDelete        : 'Delete'
       ,wpImageAnnotatorEdit          : 'Edit'
       ,wpImageAnnotatorSave          : 'Save'
       ,wpImageAnnotatorCancel        : 'Cancel'
       ,wpImageAnnotatorPreview       : 'Preview'
       ,wpImageAnnotatorRevert        : 'Revert'
       ,wpTranslate                   : 'translate'
       ,wpImageAnnotatorAddButtonText : 'Add a note'
       ,wpImageAnnotatorAddSummary    :
         'Adding image note$1'
       ,wpImageAnnotatorChangeSummary :
         'Changing image note$1'
       ,wpImageAnnotatorRemoveSummary :
         'Removing image note$1'
       ,wpImageAnnotatorHasNotesShort : 'This file has annotations.'
       ,wpImageAnnotatorHasNotesMsg   :
          'This file has annotations. Move the mouse pointer over the image to see them.'
       ,wpImageAnnotatorEditNotesMsg  :
          '\xa0To edit the notes, visit page <a href="#">x</a>.'
       ,wpImageAnnotatorDrawRectMsg   :
          'Draw a rectangle onto the image above (mouse click, then drag and release)'
       ,wpImageAnnotatorEditorLabel   :
          'Text of the note (may include '
        + '<a href="//meta.wikimedia.org/wiki/Help:Reference_card">Wiki markup</a>)'
       ,wpImageAnnotatorSaveError  :
          ''
        + 'Could not save your note (edit conflict or other problem).'
        + ' '
        + 'Please copy the text in the edit box below and insert it manually by '
        + '<a href="'
        + mw.config.get('wgArticlePath').replace ('$1', encodeURIComponent(mw.config.get('wgPageName')))
        + '?action=edit">editing this page</a>.'
       ,wpImageAnnotatorCopyright :
          'The note will be published multi-licensed as '
        + '<a href="http://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA-3.0</a> and '
        + '<a href="http://www.gnu.org/copyleft/fdl.html">GFDL</a>, versions 1.2 and 1.3. '
        + 'Please read our <a href="//wikimediafoundation.org/wiki/Terms_of_Use">terms '
        + 'of use</a> for more details.'
       ,wpImageAnnotatorDeleteReason :
          'Why do you want to remove this note?'
       ,wpImageAnnotatorDeleteConfirm :
          'Do you really want to delete this note?'
       ,wpImageAnnotatorHelp          : 
          '<a href="//commons.wikimedia.org/wiki/Help:Gadget-ImageAnnotator" '
        + 'title="Help">Help</a>'
       // The following image should be a GIF or an 8bit indexed PNG with transparent background,
       // to make sure that even IE6 displays the transparency correctly. A normal 32bit PNG might
       // display a transparent background as white on IE6.
       ,wpImageAnnotatorIndicatorIcon :
          ''
        + '<img src="//upload.wikimedia.org/wikipedia/commons/8/8a/Gtk-dialog-info-14px.png" '
        + 'width="14" height="14" title="This file has annotations" />'
        + ''
       ,wpImageAnnotatorCannotEditMsg :
          'To modify annotations, your browser needs to have the '
        + '<a href="//en.wikipedia.org/wiki/XMLHttpRequest">XMLHttpRequest</a> '
        + 'object. Your browser does not have this object or does not allow it to be used '
        + '(in Internet Explorer, it may be in a switched off ActiveX component), and '
        + 'thus you cannot modify annotations. We\'re sorry for the inconvenience.'
     }
   }
 }; // End site-wide config.
 // DO NOT CHANGE ANYTHING BELOW THIS LINE

 // Start of ImageAnnotator
 if (config.viewingEnabled()) {
     jQuery(function () {
        ImageAnnotator.install(config);
     });
 }
 

})();