From c29faeee61f4bed41701f6cc46b6fac5c3cc7b71 Mon Sep 17 00:00:00 2001 From: Grant Slater Date: Sat, 2 Jan 2016 09:41:05 +0000 Subject: [PATCH] mediawiki: Add visualeditor support --- cookbooks/mediawiki/providers/site.rb | 6 + cookbooks/mediawiki/recipes/default.rb | 13 +++ .../default/mw-ext-VisualEditor.inc.php | 13 +++ .../templates/default/parsoid-settings.js.erb | 110 ++++++++++++++++++ 4 files changed, 142 insertions(+) create mode 100644 cookbooks/mediawiki/templates/default/mw-ext-VisualEditor.inc.php create mode 100644 cookbooks/mediawiki/templates/default/parsoid-settings.js.erb diff --git a/cookbooks/mediawiki/providers/site.rb b/cookbooks/mediawiki/providers/site.rb index 52ae3224c..c422b9c2f 100644 --- a/cookbooks/mediawiki/providers/site.rb +++ b/cookbooks/mediawiki/providers/site.rb @@ -413,6 +413,12 @@ action :create do update_site false end + mediawiki_extension "VisualEditor" do + site new_resource.name + template "mw-ext-VisualEditor.inc.php.erb" + update_site false + end + cookbook_file "#{site_directory}/cc-wiki.png" do cookbook "mediawiki" owner node[:mediawiki][:user] diff --git a/cookbooks/mediawiki/recipes/default.rb b/cookbooks/mediawiki/recipes/default.rb index cadefe60c..34c4f0ab6 100644 --- a/cookbooks/mediawiki/recipes/default.rb +++ b/cookbooks/mediawiki/recipes/default.rb @@ -49,6 +49,19 @@ package "xz-utils" package "curl" package "parsoid" +template "/etc/mediawiki/parsoid/settings.js" do + source "parsoid-settings.js.erb" + owner "root" + group "root" + mode 0644 +end + +service "parsoid" do + action [:enable] + supports :status => false, :restart => true, :reload => false + subscribes :restart, "template[/etc/mediawiki/parsoid/settings.js]" +end + link "/etc/php5/apache2/conf.d/20-wikidiff2.ini" do to "../../mods-available/wikidiff2.ini" end diff --git a/cookbooks/mediawiki/templates/default/mw-ext-VisualEditor.inc.php b/cookbooks/mediawiki/templates/default/mw-ext-VisualEditor.inc.php new file mode 100644 index 000000000..58209d566 --- /dev/null +++ b/cookbooks/mediawiki/templates/default/mw-ext-VisualEditor.inc.php @@ -0,0 +1,13 @@ + 'http://<%= @mediawiki[:name] %>:8142' +); +$wgVirtualRestConfig['modules']['parsoid']['forwardCookies'] = true; + +require_once "$IP/extensions/VisualEditor/VisualEditor.php"; + +// Enable by default for everybody +// $wgDefaultUserOptions['visualeditor-enable'] = 1; + +// Don't allow users to disable it +// $wgHiddenPrefs[] = 'visualeditor-enable'; diff --git a/cookbooks/mediawiki/templates/default/parsoid-settings.js.erb b/cookbooks/mediawiki/templates/default/parsoid-settings.js.erb new file mode 100644 index 000000000..8a5b93f3d --- /dev/null +++ b/cookbooks/mediawiki/templates/default/parsoid-settings.js.erb @@ -0,0 +1,110 @@ +/* + * This is a sample configuration file. + * + * Copy this file to localsettings.js and edit that file to fit your needs. + * + * Also see: + * - api/server.js for more information about passing config files via + * the commandline. + * - lib/mediawiki.ParsoidConfig.js all the properties + * that you can configure here. Not all properties are + * documented here. + */ +'use strict'; + +exports.setup = function(parsoidConfig) { + // Set your own user-agent string + // Otherwise, defaults to "Parsoid/" + //parsoidConfig.userAgent = "My-User-Agent-String"; + + // The URL of your MediaWiki API endpoint. + //parsoidConfig.setMwApi({ prefix: 'localhost', uri: 'http://localhost/w/api.php' }); + + <% node[:mediawiki][:sites].each do |mediawiki_name| -%> + parsoidConfig.setMwApi({ uri: 'http://<%= @mediawiki_name %>/w/api.php' }); + <% end -%> + + // To specify a proxy (or proxy headers) specific to this prefix (which + // overrides defaultAPIProxyURI) use: + /* + parsoidConfig.setMwApi({ + prefix: 'localhost', + uri: 'http://localhost/w/api.php', + // set `proxy` to `null` to override and force no proxying. + proxy: { + uri: 'http://my.proxy:1234/', + headers: { 'X-Forwarded-Proto': 'https' } // headers are optional + } + }); + */ + + // We pre-define wikipedias as 'enwiki', 'dewiki' etc. Similarly + // for other projects: 'enwiktionary', 'enwikiquote', 'enwikibooks', + // 'enwikivoyage' etc. (default true) + //parsoidConfig.loadWMF = false; + + // A default proxy to connect to the API endpoints. + // Default: undefined (no proxying). + // Overridden by per-wiki proxy config in setMwApi. + //parsoidConfig.defaultAPIProxyURI = 'http://proxy.example.org:8080'; + + // Enable debug mode (prints extra debugging messages) + //parsoidConfig.debug = true; + + // Use the PHP preprocessor to expand templates via the MW API (default true) + //parsoidConfig.usePHPPreProcessor = false; + + // Use selective serialization (default false) + parsoidConfig.useSelser = true; + + // Allow cross-domain requests to the API (default '*') + // Sets Access-Control-Allow-Origin header + // disable: + //parsoidConfig.allowCORS = false; + // restrict: + //parsoidConfig.allowCORS = 'some.domain.org'; + + // Set to true for using the default performance metrics reporting to statsd + // If true, provide the statsd host/port values + /* + parsoidConfig.useDefaultPerformanceTimer = true; + parsoidConfig.txstatsdHost = 'statsd.domain.org'; + parsoidConfig.txstatsdPort = 8125; + */ + + // Alternatively, define performanceTimer as follows: + /* + parsoidConfig.performanceTimer = { + timing: function(metricName, time) { }, // do-something-with-it + count: function(metricName, value) { }, // do-something-with-it + }; + */ + + // How often should we emit a heap sample? Time in ms. + // This setting is only relevant if you have enabled + // performance monitoring either via the default metrics + // OR by defining your own performanceTimer properties + //parsoidConfig.heapUsageSampleInterval = 5 * 60 * 1000; + + // Allow override of port/interface: + //parsoidConfig.serverPort = 8000; + //parsoidConfig.serverInterface = '127.0.0.1'; + + // The URL of your LintBridge API endpoint + //parsoidConfig.linterAPI = 'http://lintbridge.wmflabs.org/add'; + + // Require SSL certificates to be valid (default true) + // Set to false when using self-signed SSL certificates + //parsoidConfig.strictSSL = false; + + // Use a different server for CSS style modules. + // Set to true to use bits.wikimedia.org, or to a string with the URI. + // Leaving it undefined (the default) will use the same URI as the MW API, + // changing api.php for load.php. + //parsoidConfig.modulesLoadURI = true; + + // Suppress some warnings from the Mediawiki API + // (defaults to suppressing warnings which the Parsoid team knows to + // be harmless) + //parsoidConfig.suppressMwApiWarnings = /annoying warning|other warning/; +}; -- 2.43.2