「利用者:Nijcadmin」の版間の差分
ナビゲーションに移動
検索に移動
細編集の要約なし |
細編集の要約なし |
||
(同じ利用者による、間の15版が非表示) | |||
1行目: | 1行目: | ||
= 2012年2月16日(木)= | |||
=== SVG 画像データを登録した際に自動変換されたサムネイル画像に線が表示されない === | |||
* 問題が起こったデータ | |||
** http://bsd.neuroinf.jp/wiki/ファイル:Serotonin-2D-skeletal.svg | |||
** http://bsd.neuroinf.jp/w/images/c/c4/Serotonin-2D-skeletal.svg | |||
* 現在用いている SVG → PNG 変換プログラム rsvg の問題の模様 | |||
* LocalSettings.php の設定変更で対応 -- (2012年2月20日) | |||
** 画像変換プログラムを rsvg から inkscape に変更. | |||
** 変換時に許容するメモリサイズを増やす. | |||
<syntaxhighlight lang="php"> | |||
$wgSVGConverter = 'inkscape'; | |||
$wgMaxShellMemory = 1024000; | |||
</syntaxhighlight> | |||
* 既存のサムネイルキャッシュを更新するにはファイルのURLで <nowiki>?action=purge</nowiki> パラメータを与えてアクセスすればよい | |||
** http://bsd.neuroinf.jp/wiki/ファイル:Serotonin-2D-skeletal.svg?action=purge | |||
= 2012年1月13日(金)= | |||
=== FCKEditor で ref タグの中の他のタグもエスケープされてしまう === | |||
<pre> | |||
使用前:<ref><pubmed>12345</pubmed><br></ref> | |||
使用後:<ref><pubmed>12345</pubmed>&lt;br&gt;</ref> | |||
</pre> | |||
* pubmed タグは11日にエスケープ対象外の対策済みだが他のタグもエスケープしないようにしてしまえばよい. | |||
* extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正 | |||
<syntaxhighlight lang="php"> | |||
case 'fck_mw_ref' : | |||
var refName = htmlNode.getAttribute( 'name' ) ; | |||
stringBuilder.push( '<ref' ) ; | |||
if ( refName && refName.length > 0 ) | |||
stringBuilder.push( ' name="' + refName + '"' ) ; | |||
if ( htmlNode.innerHTML.length == 0 ) | |||
stringBuilder.push( ' />' ) ; | |||
else | |||
{ | |||
stringBuilder.push( '>' ) ; | |||
// NIJC: | |||
stringBuilder.push( htmlNode.textContent || htmlNode.innerText ) ; | |||
stringBuilder.push( '</ref>' ) ; | |||
} | |||
return ; | |||
</syntaxhighlight> | |||
= 2012年1月12日(木)= | |||
=== FCKEditor で syntaxhighlight タグが壊れる === | |||
* extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正 | |||
<syntaxhighlight lang="php"> | |||
case 'fck_mw_source' : | |||
var refLang = htmlNode.getAttribute( 'lang' ) ; | |||
// NIJC: | |||
var refTag = 'source'; | |||
var refSyntaxHighlight = htmlNode.getAttribute( 'syntaxhighlight' ) ; | |||
if ( refSyntaxHighlight && refSyntaxHighlight == 'true' ) | |||
refTag = 'syntaxhighlight'; | |||
//stringBuilder.push( '<source' ) ; | |||
stringBuilder.push( '<' + refTag ); | |||
stringBuilder.push( ' lang="' + refLang + '"' ) ; | |||
stringBuilder.push( '>' ) ; | |||
stringBuilder.push( FCKTools.HTMLDecode(htmlNode.innerHTML).replace(/fckLR/g,'\r\n') ) ; | |||
//stringBuilder.push( '</source>' ) ; | |||
stringBuilder.push( '</' + refTag + '>' ) ; | |||
return ; | |||
</syntaxhighlight> | |||
* extensions/FCKeditor/FCKeditorParser.body.php を以下のように修正 | |||
<syntaxhighlight lang="php"> | |||
// NIJC: | |||
case 'syntaxhighlight': | |||
$params['syntaxhighlight'] = 'true'; | |||
$output = $this->fck_wikiTag('source', $content, $params); | |||
break; | |||
case 'source': | |||
$output = $this->fck_wikiTag('source', $content, $params); | |||
break; | |||
</syntaxhighlight> | |||
= 2012年1月11日(水)= | |||
=== FCKEditor で ref タグの中の pubmed タグがエスケープされてしまう === | |||
<pre> | |||
使用前:<ref><pubmed>12345</pubmed></ref> | |||
使用後:<ref>&lt;pubmed&gt;12345&lt;/pubmed&gt;</ref> | |||
</pre> | |||
* extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正 | |||
<syntaxhighlight lang="php"> | |||
case 'fck_mw_ref' : | |||
var refName = htmlNode.getAttribute( 'name' ) ; | |||
stringBuilder.push( '<ref' ) ; | |||
if ( refName && refName.length > 0 ) | |||
stringBuilder.push( ' name="' + refName + '"' ) ; | |||
if ( htmlNode.innerHTML.length == 0 ) | |||
stringBuilder.push( ' />' ) ; | |||
else | |||
{ | |||
stringBuilder.push( '>' ) ; | |||
// NIJC: | |||
//stringBuilder.push( htmlNode.innerHTML ) ; | |||
var refInnerHTML = htmlNode.innerHTML.replace( /<pubmed>/g, '<pubmed>' ).replace( /<\/pubmed>/g, '</pubmed>' ) ; | |||
stringBuilder.push( refInnerHTML ) ; | |||
stringBuilder.push( '</ref>' ) ; | |||
} | |||
return ; | |||
</syntaxhighlight> | |||
= 2012年1月4日(水)= | |||
=== SyntaxHighlight GeSHi の導入 === | |||
* http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi のインストール | |||
=== Pubmed プラグイン利用時に表示が遅い === | |||
* キャッシュ機能はキーワードを元に pubmed に問い合わせて得られた結果の pmid をキャッシュしているため,表示毎に<nowiki><pubmed>...</pubmed></nowiki>の数だけ通信が発生する. | |||
* 対策として pubmed に問い合わせる前段階でキャッシュする機能を実装. | |||
* extensions/Pubmed/entrez.cl/entrez_eutil_nijc.class.php | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
class entrez_eutils_nijc extends entrez_eutils_fcgi { | |||
// constructor | |||
function entrez_eutils_nijc() { | |||
parent::entrez_eutils_fcgi(); | |||
} | |||
// override search2 method | |||
function search2($db, $term, $off=0, $limit=500) { | |||
global $wgPubmedCacheExpire; | |||
if (empty($this->_cache)) | |||
return parent::search2($db, $term, $off, $limit); | |||
$cache = new Cache(); | |||
$cache->cachedir = $this->_cache; | |||
$filename = sprintf('esearch_%s', md5($term)); | |||
$now = time(); | |||
$expire = 604800; // 86400:1day, 604800:1 week | |||
if (isset($wgPubmedCacheExpire)) | |||
$expire = intval($wgPubmedCacheExpire); | |||
if ($cache->check($filename)) { | |||
$data = $cache->load($filename); | |||
if ($data['date'] + $expire >= $now) | |||
return $data['value']; | |||
} | |||
$data = array( | |||
'date' => $now, | |||
'value' => parent::search2($db, $term, $off, $limit), | |||
); | |||
$cache->save($filename, $data); | |||
return $data['value']; | |||
} | |||
} | |||
</syntaxhighlight> | |||
* extension/Pubmed/Pubmed.php | |||
<syntaxhighlight lang="php"> | |||
require_once("entrez.cl/entrez_eutil.class.php"); | |||
// NIJC: | |||
require_once("entrez.cl/entrez_eutil_nijc.class.php"); | |||
include("layout.inc.php"); | |||
... | |||
// NIJC: | |||
//$ncbi = new entrez_eutils_fcgi(); | |||
$ncbi = new entrez_eutils_nijc(); | |||
</syntaxhighlight> | |||
* LocalSettings.php | |||
<syntaxhighlight lang="php"> | |||
$wgPubmedCacheExpire = 604800; // 1week yo 12/1/4 | |||
</syntaxhighlight> | |||
=== Pubmed 文献の参考文献の際,参照番号の右に著者を表示したい === | |||
* レイアウトテンプレートを修正 | |||
** extension/Pubmed/layouts/layout_ext.def | |||
<pre> | |||
<b>##Authors##</b> | |||
<p style=" border:none; outset none; margin:0em; padding:0em; background-color:#fff;"> | |||
##Title## <br> | |||
<i>##Journal##</i>: ##Year##, ##Volume##(##Issue##);##Pages## ##PMID## ##WORLDCAT## ##DOI## <br> | |||
</p> | |||
</pre> | |||
= 2011年12月15日(木)= | |||
=== ページ毎に meta タグに入れるキーワードを設定したい === | |||
* 前日に作った拡張 AddKeywordsMetaTag に [http://www.mediawiki.org/wiki/Extension:MetaKeywordsTag この機能] をマージ | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
$wgExtensionCredits['other'][] = array( | |||
'name' => 'AddKeywordsMetaTag', | |||
'status' => 'Experimental', | |||
'author' => 'Yoshihiro OKUMURA', | |||
'version' => '2.0', | |||
'url' => 'http://www.neuroinf.jp/', | |||
'description' => 'Add keywords into meta tag', | |||
); | |||
$wgHooks['OutputPageBeforeHTML'][] = 'wfAddKeywordsMetaTag'; | |||
$wgExtensionFunctions[] = 'wfAddKeywordsMetaTagParserHooks'; | |||
function wfAddKeywordsMetaTagParserHooks() { | |||
global $wgParser, $wgMessageCache; | |||
$wgParser->setHook( 'keywords', 'wfAddKeywordsMetaTagRender' ); | |||
$wgMessageCache->addMessage( | |||
'metakeywordstag-missing-content', | |||
'Error: <keywords> tag must contain a "content" attribute.' | |||
); | |||
} | |||
function wfAddKeywordsMetaTagRender($text, $params = array(), $parser) { | |||
// Short-circuit with error message if content is not specified. | |||
if (!isset($params['content'])) { | |||
return '<div class="errorbox">'. | |||
wfMsgForContent('metakeywordstag-missing-content'). | |||
'</div>'; | |||
} | |||
// Return encoded content | |||
return '<!-- META_KEYWORDS '.base64_encode($params['content']).' -->'; | |||
} | |||
function wfAddKeywordsMetaTag(&$out, &$text) { | |||
global $wgTitle, $wgParser, $wgRequest, $action; | |||
if ($action !== 'edit' && | |||
$action !== 'history' && | |||
$action !== 'delete' && | |||
$action !== 'watch') { | |||
// Mediawiki:Keywords | |||
$title = Title::MakeTitle(NS_MEDIAWIKI, 'Keywords'); | |||
$article = new Article($title); | |||
$keywords = array_map('trim', explode(',', $article->getRawText())); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
$namespaces = array(NS_MAIN, NS_USER, NS_PROJECT, NS_MEDIAWIKI); | |||
foreach ($namespaces as $namespace) { | |||
// Mediawiki::Keywords-$namespace | |||
if ($wgTitle->getNamespace() === $namespace) { | |||
$page = sprintf('Keywords-%u', $namespace); | |||
$title = Title::MakeTitle(NS_MEDIAWIKI, $page); | |||
$article = new Article($title); | |||
$keywords = array_map('trim', explode(',', $article->getRawText())); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
} | |||
} | |||
} | |||
// part of MetaKeywordsTag.php | |||
if (preg_match_all('/<!-- META_KEYWORDS ([0-9a-zA-Z\\+\\/]+=*) -->/m', $text, $matches)) { | |||
$data = $matches[1]; | |||
// Merge keyword data into OutputPage as meta tags | |||
foreach ($data aS $item) { | |||
$content = @base64_decode($item); | |||
$keywords = array_map('trim', explode(',', $content)); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
} | |||
} | |||
return true; | |||
} | |||
</syntaxhighlight> | |||
= 2011年12月14日(水)= | |||
=== FCKEditor を使うと図のキャプションが消える.=== | |||
* [http://www.mediawiki.org/wiki/Extension_talk:FCKeditor_%28Official%29#disappearing_thumbnail_captions 参照] | |||
<pre> | |||
使用前 [[Image:Differentialdisplay.jpg|thumb|テスト]] | |||
使用後 [[Image:Differentialdisplay.jpg|thumb]] | |||
</pre> | |||
* extensions/FCKeditor/FCKeditorSkin.body.php を上記を参考に以下のように修正 | |||
<syntaxhighlight lang="php"> | |||
// NIJC: | |||
//if (isset($fp['alt']) && !empty($fp['alt']) && $fp['alt'] != "Image:" . $orginal) { | |||
// $ret .= "alt=\"".htmlspecialchars($fp['alt'])."\" "; | |||
if (isset($fp['caption']) && !empty($fp['caption']) && $fp['caption'] != "Image:" . $orginal) { | |||
$ret .= "alt=\"".htmlspecialchars($fp['caption'])."\" "; | |||
} | |||
</syntaxhighlight> | |||
=== keywords meta タグを入れたい === | |||
* extension/AddKeywordsMetaTag.php を作ってみた. | |||
<syntaxhighlight lang="php"> | |||
<?php | |||
$wgExtensionCredits['other'][] = array( | |||
'name' => 'AddKeywordsMetaTag', | |||
'status' => 'Experimental', | |||
'author' => 'Yoshihiro OKUMURA', | |||
'version' => '1.0', | |||
'url' => 'http://www.neuroinf.jp/', | |||
'description' => 'Mediawiki:Keywords ページの内容を keywords meta タグとして出力します.', | |||
); | |||
$wgHooks['OutputPageBeforeHTML'][] = 'wfAddKeywordsMetaTag'; | |||
function wfAddKeywordsMetaTag(&$out, &$text) { | |||
global $wgTitle, $wgParser, $wgRequest, $action; | |||
if ($action !== 'edit' && | |||
$action !== 'history' && | |||
$action !== 'delete' && | |||
$action !== 'watch') { | |||
// Mediawiki:Keywords | |||
$title = Title::MakeTitle(NS_MEDIAWIKI, 'Keywords'); | |||
$article = new Article($title); | |||
$keywords = array_map('trim', explode(',', $article->getRawText())); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
$namespaces = array(NS_MAIN, NS_USER, NS_PROJECT, NS_MEDIAWIKI); | |||
foreach ($namespaces as $namespace) { | |||
// Mediawiki::Keywords-$namespace | |||
if ($wgTitle->getNamespace() === $namespace) { | |||
$page = sprintf('Keywords-%u', $namespace); | |||
$title = Title::MakeTitle(NS_MEDIAWIKI, $page); | |||
$article = new Article($title); | |||
$keywords = array_map('trim', explode(',', $article->getRawText())); | |||
foreach ($keywords as $keyword) | |||
if (!empty($keyword)) | |||
$out->addKeyword($keyword); | |||
} | |||
} | |||
} | |||
return true; | |||
} | |||
</syntaxhighlight> | |||
= 2011年12月12日(月)= | |||
=== FCKEditor を使うとwikipediaへのリンクが符号化される. === | |||
<pre> | |||
使用前 [[wikipedia:jp:理化学研究所|理化学研究所]] | |||
使用後 [[wikipedia:jp:%E7%90%86%E5%8C%96%E5%AD%A6%E7%A0%94%E7%A9%B6%E6%89%80|理化学研究所]] | |||
</pre> | |||
* extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正 | |||
<syntaxhighlight lang="javascript"> | |||
if (a.className == 'extiw') | |||
{ | |||
a.href = a.title ; | |||
// NIJC: | |||
// a.setAttribute( '_fcksavedurl', a.href ) ; | |||
a.setAttribute( '_fcksavedurl', a.title ) ; | |||
} | |||
</syntaxhighlight> | |||
= 2011年12月7日(水)= | |||
=== metaタグ index,follow の制御が効かない. === | |||
* 承認モジュール ApprovedRevs 由来の問題 [https://bugzilla.wikimedia.org/show_bug.cgi?id=29859 参考] | |||
* includes/Article.php を以下のように修正 | |||
<syntaxhighlight lang="php"> | |||
// NIJC: | |||
//if ( $this->getID() === 0 || $this->getOldID() ) { | |||
if ( $this->getID() === 0 || $this->getOldID() == intval( @$_GET['oldid'] ) ) { | |||
# Non-articles (special pages etc), and old revisions | |||
return array( 'index' => 'noindex', | |||
'follow' => 'nofollow' ); | |||
} elseif ( $wgOut->isPrintable() ) { | |||
</syntaxhighlight> | |||
= 2011年10月5日 = | |||
* ドキュメント作成して委員会に引渡し | |||
* インストールした機能拡張 | |||
** Cite | |||
** YouTube | |||
** Embed FLV Player for Mediawiki | |||
** FCKEditor | |||
** ApprovedRevs | |||
= 2011年6月15日 (水) = | |||
== 設定変更 == | |||
* URLが http://www.bsd.neuroinf.jp/ でも接続できるように | |||
* ドキュメントのライセンスを[http://creativecommons.org/licenses/by-nd/2.1/jp/ CC-BY-ND Japan]に変更 | |||
= 2011年6月7日 (火) = | |||
== サーバ準備 == | |||
* ホスト名: bsd.neuroinf.jp (仮) | |||
* OS: Linux CentOS 5.6 x86_64 | |||
== MediaWiki 導入 == | |||
* [http://www.mediawiki.org/wiki/MediaWiki MediaWiki] 1.16.5 インストール | |||
** 言語は日本語(ja)を利用 | |||
** ドキュメントのライセンスを無難なセンで[http://creativecommons.org/licenses/by-sa/2.1/jp/ CC-BY-SA Japan]に設定 (仮) | |||
* [http://www.mediawiki.org/wiki/Manual:Short_URL Short_URL] 設定 | |||
* ロゴ画像設置(仮) | |||
** [http://www.iconfinder.com/icondetails/23662/128/accessories_dictionary_icon これ]をベースに文字を入れ替えたものに | |||
<syntaxhighlight lang="php"> | |||
$wgLogo = "$wgScriptPath/images/BSD-Logo.png"; | |||
</syntaxhighlight> | |||
* 画像アップロードの設定 | |||
<syntaxhighlight lang="php"> | |||
$wgEnableUploads = true; | |||
$wgUploadPath = "{$wgScriptPath}/images"; | |||
$wgUploadDirectory = "{$IP}/images"; | |||
$wgUseImageMagick = true; | |||
$wgImageMagickConvertCommand = "/usr/bin/convert"; | |||
</syntaxhighlight> | |||
* 数式への対応 | |||
** [http://www.mediawiki.org/wiki/Manual:Running_MediaWiki_on_Fedora このあたり]を参考に | |||
<syntaxhighlight lang="php"> | |||
$wgUseTeX = true; | |||
$wgTexvc = "/usr/bin/texvc116"; | |||
$wgMathPath = "{$wgUploadPath}/math"; | |||
$wgMathDirectory = "{$wgUploadDirectory}/math"; | |||
$wgTmpDirectory = "{$wgUploadDirectory}/tmp"; | |||
</syntaxhighlight> | |||
* 匿名ユーザの「新規アカウント作成」と「ページの編集」はとりあえず無効に | |||
<syntaxhighlight lang="php"> | |||
$wgGroupPermissions['*']['createaccount'] = false; | |||
$wgGroupPermissions['*']['edit'] = false; | |||
</syntaxhighlight> | |||
== UMIN の既存データの複製 == | |||
* https://center3.umin.ac.jp/umin-wiki/mw_bsd/index.php/メインページ のデータをこのサイトへ貼り付け | |||
== TODO == | |||
* Extensions の選定と設置 | |||
** Youtube 等の動画貼り付け | |||
** 査読 | |||
** 等々 |
2012年4月19日 (木) 15:49時点における版
2012年2月16日(木)
SVG 画像データを登録した際に自動変換されたサムネイル画像に線が表示されない
- 問題が起こったデータ
- 現在用いている SVG → PNG 変換プログラム rsvg の問題の模様
- LocalSettings.php の設定変更で対応 -- (2012年2月20日)
- 画像変換プログラムを rsvg から inkscape に変更.
- 変換時に許容するメモリサイズを増やす.
$wgSVGConverter = 'inkscape';
$wgMaxShellMemory = 1024000;
- 既存のサムネイルキャッシュを更新するにはファイルのURLで ?action=purge パラメータを与えてアクセスすればよい
2012年1月13日(金)
FCKEditor で ref タグの中の他のタグもエスケープされてしまう
使用前:<ref><pubmed>12345</pubmed><br></ref> 使用後:<ref><pubmed>12345</pubmed><br></ref>
- pubmed タグは11日にエスケープ対象外の対策済みだが他のタグもエスケープしないようにしてしまえばよい.
- extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正
case 'fck_mw_ref' :
var refName = htmlNode.getAttribute( 'name' ) ;
stringBuilder.push( '<ref' ) ;
if ( refName && refName.length > 0 )
stringBuilder.push( ' name="' + refName + '"' ) ;
if ( htmlNode.innerHTML.length == 0 )
stringBuilder.push( ' />' ) ;
else
{
stringBuilder.push( '>' ) ;
// NIJC:
stringBuilder.push( htmlNode.textContent || htmlNode.innerText ) ;
stringBuilder.push( '</ref>' ) ;
}
return ;
2012年1月12日(木)
FCKEditor で syntaxhighlight タグが壊れる
- extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正
case 'fck_mw_source' :
var refLang = htmlNode.getAttribute( 'lang' ) ;
// NIJC:
var refTag = 'source';
var refSyntaxHighlight = htmlNode.getAttribute( 'syntaxhighlight' ) ;
if ( refSyntaxHighlight && refSyntaxHighlight == 'true' )
refTag = 'syntaxhighlight';
//stringBuilder.push( '<source' ) ;
stringBuilder.push( '<' + refTag );
stringBuilder.push( ' lang="' + refLang + '"' ) ;
stringBuilder.push( '>' ) ;
stringBuilder.push( FCKTools.HTMLDecode(htmlNode.innerHTML).replace(/fckLR/g,'\r\n') ) ;
//stringBuilder.push( '</source>' ) ;
stringBuilder.push( '</' + refTag + '>' ) ;
return ;
- extensions/FCKeditor/FCKeditorParser.body.php を以下のように修正
// NIJC:
case 'syntaxhighlight':
$params['syntaxhighlight'] = 'true';
$output = $this->fck_wikiTag('source', $content, $params);
break;
case 'source':
$output = $this->fck_wikiTag('source', $content, $params);
break;
2012年1月11日(水)
FCKEditor で ref タグの中の pubmed タグがエスケープされてしまう
使用前:<ref><pubmed>12345</pubmed></ref> 使用後:<ref><pubmed>12345</pubmed></ref>
- extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正
case 'fck_mw_ref' :
var refName = htmlNode.getAttribute( 'name' ) ;
stringBuilder.push( '<ref' ) ;
if ( refName && refName.length > 0 )
stringBuilder.push( ' name="' + refName + '"' ) ;
if ( htmlNode.innerHTML.length == 0 )
stringBuilder.push( ' />' ) ;
else
{
stringBuilder.push( '>' ) ;
// NIJC:
//stringBuilder.push( htmlNode.innerHTML ) ;
var refInnerHTML = htmlNode.innerHTML.replace( /<pubmed>/g, '<pubmed>' ).replace( /<\/pubmed>/g, '</pubmed>' ) ;
stringBuilder.push( refInnerHTML ) ;
stringBuilder.push( '</ref>' ) ;
}
return ;
2012年1月4日(水)
SyntaxHighlight GeSHi の導入
Pubmed プラグイン利用時に表示が遅い
- キャッシュ機能はキーワードを元に pubmed に問い合わせて得られた結果の pmid をキャッシュしているため,表示毎に<pubmed>...</pubmed>の数だけ通信が発生する.
- 対策として pubmed に問い合わせる前段階でキャッシュする機能を実装.
- extensions/Pubmed/entrez.cl/entrez_eutil_nijc.class.php
<?php
class entrez_eutils_nijc extends entrez_eutils_fcgi {
// constructor
function entrez_eutils_nijc() {
parent::entrez_eutils_fcgi();
}
// override search2 method
function search2($db, $term, $off=0, $limit=500) {
global $wgPubmedCacheExpire;
if (empty($this->_cache))
return parent::search2($db, $term, $off, $limit);
$cache = new Cache();
$cache->cachedir = $this->_cache;
$filename = sprintf('esearch_%s', md5($term));
$now = time();
$expire = 604800; // 86400:1day, 604800:1 week
if (isset($wgPubmedCacheExpire))
$expire = intval($wgPubmedCacheExpire);
if ($cache->check($filename)) {
$data = $cache->load($filename);
if ($data['date'] + $expire >= $now)
return $data['value'];
}
$data = array(
'date' => $now,
'value' => parent::search2($db, $term, $off, $limit),
);
$cache->save($filename, $data);
return $data['value'];
}
}
- extension/Pubmed/Pubmed.php
require_once("entrez.cl/entrez_eutil.class.php");
// NIJC:
require_once("entrez.cl/entrez_eutil_nijc.class.php");
include("layout.inc.php");
...
// NIJC:
//$ncbi = new entrez_eutils_fcgi();
$ncbi = new entrez_eutils_nijc();
- LocalSettings.php
$wgPubmedCacheExpire = 604800; // 1week yo 12/1/4
Pubmed 文献の参考文献の際,参照番号の右に著者を表示したい
- レイアウトテンプレートを修正
- extension/Pubmed/layouts/layout_ext.def
<b>##Authors##</b> <p style=" border:none; outset none; margin:0em; padding:0em; background-color:#fff;"> ##Title## <br> <i>##Journal##</i>: ##Year##, ##Volume##(##Issue##);##Pages## ##PMID## ##WORLDCAT## ##DOI## <br> </p>
2011年12月15日(木)
ページ毎に meta タグに入れるキーワードを設定したい
- 前日に作った拡張 AddKeywordsMetaTag に この機能 をマージ
<?php
$wgExtensionCredits['other'][] = array(
'name' => 'AddKeywordsMetaTag',
'status' => 'Experimental',
'author' => 'Yoshihiro OKUMURA',
'version' => '2.0',
'url' => 'http://www.neuroinf.jp/',
'description' => 'Add keywords into meta tag',
);
$wgHooks['OutputPageBeforeHTML'][] = 'wfAddKeywordsMetaTag';
$wgExtensionFunctions[] = 'wfAddKeywordsMetaTagParserHooks';
function wfAddKeywordsMetaTagParserHooks() {
global $wgParser, $wgMessageCache;
$wgParser->setHook( 'keywords', 'wfAddKeywordsMetaTagRender' );
$wgMessageCache->addMessage(
'metakeywordstag-missing-content',
'Error: <keywords> tag must contain a "content" attribute.'
);
}
function wfAddKeywordsMetaTagRender($text, $params = array(), $parser) {
// Short-circuit with error message if content is not specified.
if (!isset($params['content'])) {
return '<div class="errorbox">'.
wfMsgForContent('metakeywordstag-missing-content').
'</div>';
}
// Return encoded content
return '<!-- META_KEYWORDS '.base64_encode($params['content']).' -->';
}
function wfAddKeywordsMetaTag(&$out, &$text) {
global $wgTitle, $wgParser, $wgRequest, $action;
if ($action !== 'edit' &&
$action !== 'history' &&
$action !== 'delete' &&
$action !== 'watch') {
// Mediawiki:Keywords
$title = Title::MakeTitle(NS_MEDIAWIKI, 'Keywords');
$article = new Article($title);
$keywords = array_map('trim', explode(',', $article->getRawText()));
foreach ($keywords as $keyword)
if (!empty($keyword))
$out->addKeyword($keyword);
$namespaces = array(NS_MAIN, NS_USER, NS_PROJECT, NS_MEDIAWIKI);
foreach ($namespaces as $namespace) {
// Mediawiki::Keywords-$namespace
if ($wgTitle->getNamespace() === $namespace) {
$page = sprintf('Keywords-%u', $namespace);
$title = Title::MakeTitle(NS_MEDIAWIKI, $page);
$article = new Article($title);
$keywords = array_map('trim', explode(',', $article->getRawText()));
foreach ($keywords as $keyword)
if (!empty($keyword))
$out->addKeyword($keyword);
}
}
}
// part of MetaKeywordsTag.php
if (preg_match_all('/<!-- META_KEYWORDS ([0-9a-zA-Z\\+\\/]+=*) -->/m', $text, $matches)) {
$data = $matches[1];
// Merge keyword data into OutputPage as meta tags
foreach ($data aS $item) {
$content = @base64_decode($item);
$keywords = array_map('trim', explode(',', $content));
foreach ($keywords as $keyword)
if (!empty($keyword))
$out->addKeyword($keyword);
}
}
return true;
}
2011年12月14日(水)
FCKEditor を使うと図のキャプションが消える.
使用前 [[Image:Differentialdisplay.jpg|thumb|テスト]] 使用後 [[Image:Differentialdisplay.jpg|thumb]]
- extensions/FCKeditor/FCKeditorSkin.body.php を上記を参考に以下のように修正
// NIJC:
//if (isset($fp['alt']) && !empty($fp['alt']) && $fp['alt'] != "Image:" . $orginal) {
// $ret .= "alt=\"".htmlspecialchars($fp['alt'])."\" ";
if (isset($fp['caption']) && !empty($fp['caption']) && $fp['caption'] != "Image:" . $orginal) {
$ret .= "alt=\"".htmlspecialchars($fp['caption'])."\" ";
}
keywords meta タグを入れたい
- extension/AddKeywordsMetaTag.php を作ってみた.
<?php
$wgExtensionCredits['other'][] = array(
'name' => 'AddKeywordsMetaTag',
'status' => 'Experimental',
'author' => 'Yoshihiro OKUMURA',
'version' => '1.0',
'url' => 'http://www.neuroinf.jp/',
'description' => 'Mediawiki:Keywords ページの内容を keywords meta タグとして出力します.',
);
$wgHooks['OutputPageBeforeHTML'][] = 'wfAddKeywordsMetaTag';
function wfAddKeywordsMetaTag(&$out, &$text) {
global $wgTitle, $wgParser, $wgRequest, $action;
if ($action !== 'edit' &&
$action !== 'history' &&
$action !== 'delete' &&
$action !== 'watch') {
// Mediawiki:Keywords
$title = Title::MakeTitle(NS_MEDIAWIKI, 'Keywords');
$article = new Article($title);
$keywords = array_map('trim', explode(',', $article->getRawText()));
foreach ($keywords as $keyword)
if (!empty($keyword))
$out->addKeyword($keyword);
$namespaces = array(NS_MAIN, NS_USER, NS_PROJECT, NS_MEDIAWIKI);
foreach ($namespaces as $namespace) {
// Mediawiki::Keywords-$namespace
if ($wgTitle->getNamespace() === $namespace) {
$page = sprintf('Keywords-%u', $namespace);
$title = Title::MakeTitle(NS_MEDIAWIKI, $page);
$article = new Article($title);
$keywords = array_map('trim', explode(',', $article->getRawText()));
foreach ($keywords as $keyword)
if (!empty($keyword))
$out->addKeyword($keyword);
}
}
}
return true;
}
2011年12月12日(月)
FCKEditor を使うとwikipediaへのリンクが符号化される.
使用前 [[wikipedia:jp:理化学研究所|理化学研究所]] 使用後 [[wikipedia:jp:%E7%90%86%E5%8C%96%E5%AD%A6%E7%A0%94%E7%A9%B6%E6%89%80|理化学研究所]]
- extensions/FCKeditor/plugins/mediawiki/fckplugin.js を以下のように修正
if (a.className == 'extiw')
{
a.href = a.title ;
// NIJC:
// a.setAttribute( '_fcksavedurl', a.href ) ;
a.setAttribute( '_fcksavedurl', a.title ) ;
}
2011年12月7日(水)
metaタグ index,follow の制御が効かない.
- 承認モジュール ApprovedRevs 由来の問題 参考
- includes/Article.php を以下のように修正
// NIJC:
//if ( $this->getID() === 0 || $this->getOldID() ) {
if ( $this->getID() === 0 || $this->getOldID() == intval( @$_GET['oldid'] ) ) {
# Non-articles (special pages etc), and old revisions
return array( 'index' => 'noindex',
'follow' => 'nofollow' );
} elseif ( $wgOut->isPrintable() ) {
2011年10月5日
- ドキュメント作成して委員会に引渡し
- インストールした機能拡張
- Cite
- YouTube
- Embed FLV Player for Mediawiki
- FCKEditor
- ApprovedRevs
2011年6月15日 (水)
設定変更
- URLが http://www.bsd.neuroinf.jp/ でも接続できるように
- ドキュメントのライセンスをCC-BY-ND Japanに変更
2011年6月7日 (火)
サーバ準備
- ホスト名: bsd.neuroinf.jp (仮)
- OS: Linux CentOS 5.6 x86_64
MediaWiki 導入
- MediaWiki 1.16.5 インストール
- 言語は日本語(ja)を利用
- ドキュメントのライセンスを無難なセンでCC-BY-SA Japanに設定 (仮)
- Short_URL 設定
- ロゴ画像設置(仮)
- これをベースに文字を入れ替えたものに
$wgLogo = "$wgScriptPath/images/BSD-Logo.png";
- 画像アップロードの設定
$wgEnableUploads = true;
$wgUploadPath = "{$wgScriptPath}/images";
$wgUploadDirectory = "{$IP}/images";
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";
- 数式への対応
- このあたりを参考に
$wgUseTeX = true;
$wgTexvc = "/usr/bin/texvc116";
$wgMathPath = "{$wgUploadPath}/math";
$wgMathDirectory = "{$wgUploadDirectory}/math";
$wgTmpDirectory = "{$wgUploadDirectory}/tmp";
- 匿名ユーザの「新規アカウント作成」と「ページの編集」はとりあえず無効に
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['edit'] = false;
UMIN の既存データの複製
- https://center3.umin.ac.jp/umin-wiki/mw_bsd/index.php/メインページ のデータをこのサイトへ貼り付け
TODO
- Extensions の選定と設置
- Youtube 等の動画貼り付け
- 査読
- 等々