LoginSignup
41
29

More than 3 years have passed since last update.

GROWI カスタムスクリプト集

Last updated at Posted at 2019-01-28

GROWI のカスタムスクリプトのメモ書きです。
他に何か思いついたら更新します。

スクリプトの読み込み

GROWI の管理画面からカスタマイズ画面(/admin/customize)にあるカスタムスクリプトに、以下のコードを入力します。

// 追加するスクリプトの定義を記述
// function something() {
//   ...
// }
$(function() {
  var functions = [
    // ここに関数の名前を列挙する
    // 以下は例
    addLangAttrToHtmlTag,
    openExternalPageInNewTab,
    applyLightBox,
  ];
  for (var i in functions) {
    functions[i]();
  }
});

スクリプト

HTML タグに lang 属性を付与する

ページの html タグには lang 属性が付与されておらず、Google Chrome などではページを翻訳するかどうかのダイアログが表示されることがあります。これを抑制できるようにします。

function addLangAttrToHtmlTag() {
  var language = window.navigator.language || window.navigator.userLanguage || window.navigator.browserLanguage;
  $('html').attr('lang', language);
}

パーマリンク文字列のみコピーされるようにする

パーマリンクの右側にあるコピーボタンを押した際、ページタイトルとパーマリンクの両方がコピーされますが、ページタイトルのコピーは不要という状況で使用します。Issue #493 の対応策となります。

2019/5/16追記: v3.4.6 でコピーボタンが新しくなったので、これを使わなくてもできるようになります。

function copyPageUrlOnly() {
  var elem = $('#btnCopyRevisionUrl').attr('data-clipboard-text');
  if (elem !== undefined) {
    var url = elem.split('\n')[1];
    $('#btnCopyRevisionUrl').attr('data-clipboard-text', url);
  }
}

外部ドメインへのリンクを新しいタブで開かれるようにする

外部ドメインへのリンクは新しいタブで開かれるようにします。href に相対パス、もしくは接続先ドメインを含む絶対パスが記述されている a タグ以外に target="_blank" 属性を付与します。

function openExternalPageInNewTab() {
  $('a[href]').each((i, elem) => {
    var url = elem.href.match(/(?:https?:\/\/([\w:%#\$&\?\(\)~\.=\+\-]+))?(\/?[\w/:%#\$&\?\(\)~\.=\+\-]+)/);
    if (url[1] !== undefined && url[1] !== document.domain) {
      elem.target = '_blank';
    }
  });
}

画像をクリックして拡大する

LightBox を利用して、画像をクリックすると拡大表示されるようにします。

function applyLightBox() {
  $('head link:last').after('<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/lightbox2@2.10.0/dist/css/lightbox.min.css" />');
  $('head script:last').after('<script src="https://cdn.jsdelivr.net/npm/lightbox2@2.10.0/dist/js/lightbox.min.js"><\/script>');
  $('#page').find('img:not(.emojione)').each(function(i, elem) {
    var a = $('<a>').attr({'href': $(elem).attr('src'), 'data-lightbox': $(elem).attr('alt')||"nothing", 'data-title': $(elem).attr('alt')||"nothing"});
    $(elem).wrap(a);
  });
}
41
29
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
29