利用者:Nijcadmin/FY2013のソースを表示
←
利用者:Nijcadmin/FY2013
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
= 2014年2月12日(水) = === Wikiflvタグ中に指定した.mp4ファイルが再生できない === *一時的に開始タグ「<」を削除して、再生できない状態にしてある。 **ファイル名末尾に「|」があったため、削除し再生確認 = 2013年5月6日(月) = === Interwiki 拡張を使いたいが PHP が古過ぎる === *新しいPHPのインストールを試みたがうまくいかない *OS のアップデートを検討 **裏で環境を整え[[テスト]]を実施して準備ができ次第連絡 **アップデート完了 === ChemBox の InChI 表示が変 === * 両者の表示が異なる http://en.wikipedia.org/wiki/Caffeine http://bsd.neuroinf.jp/w/index.php?title=カフェイン&oldid=20157 * [[Wikipedia:NavFrame]]関連の CSS および JS が必要な模様 * [[Template:Chembox EUIndex]] 新規作成 * [[Template:Chembox InChI]] 新規作成 * [[MediaWiki:Common.css]] 修正 <syntaxhighlight lang="css"> /* Standard Navigationsleisten, aka box hiding thingy from .de. Documentation at [[Wikipedia:NavFrame]]. */ div.NavFrame { margin: 0; padding: 4px; border: 1px solid #aaa; text-align: center; border-collapse: collapse; font-size: 95%; } div.NavFrame + div.NavFrame { border-top-style: none; border-top-style: hidden; } div.NavPic { background-color: #fff; margin: 0; padding: 2px; /* @noflip */ float: left; } div.NavFrame div.NavHead { height: 1.6em; font-weight: bold; background-color: #ccf; position: relative; } div.NavFrame p, div.NavFrame div.NavContent, div.NavFrame div.NavContent p { font-size: 100%; } div.NavEnd { margin: 0; padding: 0; line-height: 1px; clear: both; } a.NavToggle { position: absolute; top: 0; /* @noflip */ right: 3px; font-weight: normal; font-size: 90%; } </syntaxhighlight> * [[MediaWiki:Common.js]] 修正 ** 現在の MediaWiki の仕組みでは古すぎる *** MediaWiki同梱のは古いので Google API のjQueryを利用.ただし弊害あるかも *** Common.js に遅延呼び出しを無理矢理実装 *** MediaWikiアップデートの際にはこの部分書き換える必要あり <syntaxhighlight lang="javascript"> /** * NIJC: */ // importScriptURI('http://bsd.neuroinf.jp/w/skins/common/jquery.min.js'); importScriptURI("http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"); var NIJC_WindowOnLoad = window.onload; window.onload = function(){ if ( typeof(NIJC_WindowOnLoad) == "function" ) NIJC_WindowOnLoad(); jQuery(function($){ /** * Dynamic Navigation Bars (experimental) * * Description: See [[Wikipedia:NavFrame]]. * Maintainers: UNMAINTAINED */ /* set up the words in your language */ var NavigationBarHide = '[' + collapseCaption + ']'; var NavigationBarShow = '[' + expandCaption + ']'; /** * Shows and hides content and picture (if available) of navigation bars * Parameters: * indexNavigationBar: the index of navigation bar to be toggled **/ window.toggleNavigationBar = function ( indexNavigationBar, event ) { var NavToggle = document.getElementById( 'NavToggle' + indexNavigationBar ); var NavFrame = document.getElementById( 'NavFrame' + indexNavigationBar ); var NavChild; if ( !NavFrame || !NavToggle ) { return false; } /* if shown now */ if ( NavToggle.firstChild.data === NavigationBarHide ) { for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) { NavChild.style.display = 'none'; } } NavToggle.firstChild.data = NavigationBarShow; /* if hidden now */ } else if ( NavToggle.firstChild.data === NavigationBarShow ) { for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavContent' ) || $( NavChild ).hasClass( 'NavPic' ) ) { NavChild.style.display = 'block'; } } NavToggle.firstChild.data = NavigationBarHide; } event.preventDefault(); }; /* adds show/hide-button to navigation bars */ function createNavigationBarToggleButton() { var indexNavigationBar = 0; var NavFrame; var NavChild; /* iterate over all < div >-elements */ var divs = document.getElementsByTagName( 'div' ); for ( var i = 0; (NavFrame = divs[i]); i++ ) { /* if found a navigation bar */ if ( $( NavFrame ).hasClass( 'NavFrame' ) ) { indexNavigationBar++; var NavToggle = document.createElement( 'a' ); NavToggle.className = 'NavToggle'; NavToggle.setAttribute( 'id', 'NavToggle' + indexNavigationBar ); NavToggle.setAttribute( 'href', '#' ); $( NavToggle ).on( 'click', $.proxy( window.toggleNavigationBar, window, indexNavigationBar ) ); var isCollapsed = $( NavFrame ).hasClass( 'collapsed' ); /** * Check if any children are already hidden. This loop is here for backwards compatibility: * the old way of making NavFrames start out collapsed was to manually add style="display:none" * to all the NavPic/NavContent elements. Since this was bad for accessibility (no way to make * the content visible without JavaScript support), the new recommended way is to add the class * "collapsed" to the NavFrame itself, just like with collapsible tables. */ for ( NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) { if ( NavChild.style.display === 'none' ) { isCollapsed = true; } } } if ( isCollapsed ) { for ( NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling ) { if ( $( NavChild ).hasClass( 'NavPic' ) || $( NavChild ).hasClass( 'NavContent' ) ) { NavChild.style.display = 'none'; } } } var NavToggleText = document.createTextNode( isCollapsed ? NavigationBarShow : NavigationBarHide ); NavToggle.appendChild( NavToggleText ); /* Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked) */ for( var j = 0; j < NavFrame.childNodes.length; j++ ) { if ( $( NavFrame.childNodes[j] ).hasClass( 'NavHead' ) ) { NavToggle.style.color = NavFrame.childNodes[j].style.color; NavFrame.childNodes[j].appendChild( NavToggle ); } } NavFrame.setAttribute( 'id', 'NavFrame' + indexNavigationBar ); } } } $( createNavigationBarToggleButton ); }); } </syntaxhighlight> = 2013年5月3日(金) = === LinkTitles 拡張がうまく動かない === *日本語環境下で使うには改良が必要らしい? *LinkTitles.php の初期化方法が PHP 5.2.3 以降でしか使えない書式の模様 <syntaxhighlight lang="php"> $wgExtensionFunctions[] = 'LinkTitles::setup'; </syntaxhighlight> *<del>とりあえず互換ルーチンに書き換え</del> ** PHP 5.3 にアップデート済のため元に戻した <syntaxhighlight lang="php"> $wgExtensionFunctions[] = 'efLinkTitles_SetupHelper'; function efLinkTitles_SetupHelper() { LinkTitles::setup(); } </syntaxhighlight> *日本語環境対策完了 (2013/5/10) **UTF-8なページであれば WORD 境界を検索条件にしないように改造 **一文字目を抜き出す処理はマルチバイト関数を利用 **XMLタグは delimiter として扱うよう改造 <syntaxhighlight lang="php"> --- LinkTitles.body.php.orig 2013-05-03 22:26:22.000000000 +0900 +++ LinkTitles.body.php 2013-05-10 18:36:10.138947085 +0900 @@ -120,6 +120,9 @@ // optional. Note that in order to use preg_split(), it is important to have only one // capturing subpattern (which precludes the use of conditional subpatterns). ( $wgLinkTitlesParseHeadings ) ? $delimiter = '' : $delimiter = '=+.+?=+|'; + // NIJC: append XML tag to delimiter + $xmlPattern = '(?:<\/?\S+(?:\s+\S+=(?:\"[^\"]*\"|\'[^\']*\'))*\s*\/?>)|'; + $delimiter = $delimiter . $xmlPattern; $urlPattern = '[a-z]+?\:\/\/(?:\S+\.)+\S+(?:\/.*)?'; $delimiter = '/(' . $delimiter . '\[\[.*?\]\]|' . $templatesDelimiter . '|\[' . $urlPattern . '\s.+?\]|'. $urlPattern . @@ -162,6 +165,8 @@ if ( $title != $myTitle ) { LinkTitles::$safeTitle = str_replace( '/', '\/', $title ); + // NIJC: escape round brackets. + LinkTitles::$safeTitle = str_replace( array('(', ')'), array('\(', '\)'), LinkTitles::$safeTitle ); // split the string by [[...]] groups // credits to inhan @ StackOverflow for suggesting preg_split @@ -173,17 +178,25 @@ // way, or in a 'fuzzy' way where the first letter of the title may // be either case. if ( $wgCapitalLinks ) { - $searchTerm = '((?i)' . LinkTitles::$safeTitle[0] . '(?-i)' . - substr(LinkTitles::$safeTitle, 1) . ')'; + // NIJC: use multibyte functions + $searchTerm = '((?i:' . mb_substr(LinkTitles::$safeTitle, 0, 1) . ')' . + mb_substr(LinkTitles::$safeTitle, 1) . ')'; } else { $searchTerm = '(' . LinkTitles::$safeTitle . ')'; } for ( $i = 0; $i < count( $arr ); $i+=2 ) { // even indexes will point to text that is not enclosed by brackets +// NIJC: ignore word delimiter if search word is UTF-8 +if (mb_detect_encoding($searchTerm) == 'UTF-8') { + $arr[$i] = preg_replace( '/(?<![\:\.\@\/\?\&])' . + $searchTerm . '/', + '[[$1]]', $arr[$i], $limit, $count ); +} else { $arr[$i] = preg_replace( '/(?<![\:\.\@\/\?\&])' . $wordStartDelim . $searchTerm . $wordEndDelim . '/', '[[$1]]', $arr[$i], $limit, $count ); +} if (( $limit >= 0 ) && ( $count > 0 )) { break; }; @@ -201,9 +214,16 @@ for ( $i = 0; $i < count( $arr ); $i+=2 ) { // even indexes will point to text that is not enclosed by brackets +// NIJC: ignore word delimiter if search word is UTF-8 +if (mb_detect_encoding(LinkTitles::$safeTitle) == 'UTF-8') { + $arr[$i] = preg_replace_callback( '/(?<![\:\.\@\/\?\&])' . + '(' . LinkTitles::$safeTitle . ')' . + '/i', $callBack, $arr[$i], $limit, $count ); +} else { $arr[$i] = preg_replace_callback( '/(?<![\:\.\@\/\?\&])' . $wordStartDelim . '(' . LinkTitles::$safeTitle . ')' . $wordEndDelim . '/i', $callBack, $arr[$i], $limit, $count ); +} if (( $limit >= 0 ) && ( $count > 0 )) { break; }; @@ -216,7 +236,8 @@ } static function CallBackCaseInsensitive($matches) { - if ( strcmp(substr(LinkTitles::$safeTitle, 1), substr($matches[0], 1)) == 0 ) { + // NIJC: use multibyte functions + if ( strcmp(mb_substr(LinkTitles::$safeTitle, 1), mb_substr($matches[0], 1)) == 0 ) { return '[[' . $matches[0] . ']]'; } else { return '[[' . LinkTitles::$safeTitle . '|' . $matches[0] . ']]'; @@ -224,7 +245,8 @@ } static function CallBackCaseSensitive($matches) { - if ( strcmp(substr(LinkTitles::$safeTitle, 0), substr($matches[0], 0)) == 0 ) { + // NIJC: use multibyte functions + if ( strcmp(mb_substr(LinkTitles::$safeTitle, 0), mb_substr($matches[0], 0)) == 0 ) { return '[[' . $matches[0] . ']]'; } else { return '[[' . LinkTitles::$safeTitle . '|' . $matches[0] . ']]'; </syntaxhighlight>
利用者:Nijcadmin/FY2013
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
利用者ページ
日本語
表示
閲覧
履歴表示
その他
検索
案内
索引
脳科学辞典について
最近完成した項目
編集履歴
執筆にあたって
引用の仕方
著作権について
免責事項
問い合わせ
各学会編集のオンライン用語辞典
About us (in English)
Twitter (BrainScienceBot)
ツール
リンク元
関連ページの更新状況
利用者の投稿記録
記録
利用者グループの表示
特別ページ
ページ情報
他のプロジェクト