OSDN Git Service

modified version description.
[feedblog/feedblog_ext.git] / js / lunardial / feedblog_ext.js
index 4bcd5f8..cb5572f 100644 (file)
@@ -4,7 +4,7 @@
  * @copyright 2009 FeedBlog Project (http://sourceforge.jp/projects/feedblog/)
  * @author Kureha Hisame (http://lunardial.sakura.ne.jp/) & Yui Naruse (http://airemix.com/)
  * @since 2008/10/16
- * @version 2.1.0.0
+ * @version 3.1.1.0
  */
 // ブログ本体のHTMLファイルの名前を記入してください
 var blogUrl = "./index.html"
@@ -35,7 +35,7 @@ var loadedEntries;
  * 0 = 改行コード部分に<br/>を挿入
  * 1 = 改行コード部分に<br/>を挿入しない
  */
-var validateMode = "0";
+var validateMode = "1";
 
 /**
  * Ext jsパネルを実際に生成します。この部分を編集することでデザインを変更可能です。
@@ -101,7 +101,7 @@ function Entry(obj){
  * 呼び出すとDIV:id名:writeArea上のHTMLを削除し、ロードエフェクトを表示します
  */
 function loadingEffect(){
-    document.getElementById("writeArea").innerHTML = '<br/><br/><div id="drawPanel"><div id="drawItem" class="code" style="text-align: center;"><\/div><\/div>';
+    document.getElementById("writeArea").innerHTML = '<div id="drawPanel"><div id="drawItem" class="code" style="text-align: center;"><\/div><\/div>';
     document.getElementById("drawItem").innerHTML = '<br/><img src="./js/ext/resources/images/default/shared/blue-loading.gif"><br/>長時間画面が切り替わらない場合はページをリロードしてください。<br/><br/>';
     
     // ロード表示用のパネルを生成
@@ -120,7 +120,8 @@ function requiredElementError(parent, name){
 }
 
 function xmlAttrContentEscape(str){
-    return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
+    // return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
+    return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/^[ ]+/mg, "&nbsp;").replace(/^[\t]+/mg, "");
 }
 
 /**
@@ -275,6 +276,9 @@ function searchMode(urlhash){
                 filelist[i] = separateTag[i].getElementsByTagName("path")[0].firstChild.nodeValue;
             }
             
+            // 終端まで検索した日記XMLファイルの数を格納する変数
+            var searchFileNumbers = 0;
+            
             // ファイルパス配列に格納されているすべての日記に対し、探索を開始する
             for (var i = 0; i < separateTag.length; i++) {
                 // ファイルパス配列の要素からリクエストを生成し、対象データをロードする
@@ -302,8 +306,10 @@ function searchMode(urlhash){
                                 '<div id="drawPanel"><div id="drawItem" class="code"><\/div><\/div>' +
                                 '<div style="line-height: ' +
                                 entrySpan +
-                                'px;"><br/></div>' + 
-                                '<div><table class="pager" width="' + extPanelWidth + '" cellspacing="1"><tbody>' +
+                                'px;"><br/></div>' +
+                                '<div><table class="pager" width="' +
+                                extPanelWidth +
+                                '" cellspacing="1"><tbody>' +
                                 '<tr><td align="left"><<< 前の3件を表示</td><td align="center">[ 0 ]</td><td align="right">次の3件を表示 >>></td></tr>' +
                                 '<tr><td class="pager" colspan="3">1件~1件(全1件)目の記事を表示中<br/></td></tr></tbody></table></div>';
                                 document.getElementById("drawItem").innerHTML = contentsWithid(entry.content, entry.id);
@@ -311,18 +317,28 @@ function searchMode(urlhash){
                                 // 探索されたパネルはオープン状態で展開する
                                 generatePanel(entry.title + " / " + entry.date, "drawItem", "drawPanel", false);
                                 
-                                break;
+                                return true;
                             }
+                            else 
+                                if (j == searchSeparateTag.length - 1) {
+                                    // 日記を最後まで検索してもファイルが見つからなかった場合、検索済み日記ファイル数に1加算する
+                                    searchFileNumbers = searchFileNumbers + 1;
+                                    
+                                    // もうファイルがない場合はエラーを表示する
+                                    if (searchFileNumbers == separateTag.length) {
+                                        // ファイルパス配列から日記が見つからなかった場合の処理
+                                        document.getElementById("writeArea").innerHTML = '<div id="drawPanel"><div id="drawItem" class="code"><\/div><\/div>';
+                                        document.getElementById("drawItem").innerHTML = "指定された日記は存在しません。";
+                                        
+                                        // エラー内容を表示する
+                                        generatePanel("Search Failed.", "drawItem", "drawPanel", false);
+                                    }
+                                }
                         }
+                        
                     }
                 });
             }
-            // ファイルパス配列から日記が見つからなかった場合の処理
-            document.getElementById("writeArea").innerHTML = '<br/><br/><div id="drawPanel"><div id="drawItem" class="code"><\/div><\/div>';
-            document.getElementById("drawItem").innerHTML = "指定された日記は存在しません。";
-            
-            // エラー内容を表示する
-            generatePanel("Search Failed.", "drawItem", "drawPanel", false);
         }
     });
 }