ホーム
おまかせ表示
ログイン
設定
脳科学辞典について
免責事項
脳科学辞典
検索
利用者: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
に戻る。