OSDN Git Service

- fixed generator bug(when change logfile, tags are not deleted).
[feedblog/feedblog.git] / js / lunardial / feedblog_generator.js
index acf5c88..95fc466 100644 (file)
@@ -4,7 +4,7 @@
  * @copyright 2009 FeedBlog Project (http://sourceforge.jp/projects/feedblog/)\r
  * @author Kureha Hisame (http://lunardial.sakura.ne.jp/) & Yui Naruse (http://airemix.com/)\r
  * @since 2009/06/03\r
- * @version 3.1.1.0\r
+ * @version 4.1.0.1\r
  */\r
 // Feex XMLの<content>要素で、<br>を使用しているか?\r
 var inputValidateMode = 1;\r
@@ -29,13 +29,13 @@ function applyChange() {
        feedInfo = applyFeedinfo();\r
        pageAddr = feedInfo.alternate;\r
 \r
-       if(document.getElementById("entry_title").value == "" || document.getElementById("entry_stdin").value == "") {\r
-               if(confirm("タイトルか記事が空白です!FeedBlogでの表示時にエラーが出ますがよろしいですか?") == false) {\r
+       if (document.getElementById("entry_title").value == "" || document.getElementById("entry_stdin").value == "") {\r
+               if (confirm("タイトルか記事が空白です!FeedBlogでの表示時にエラーが出ますがよろしいですか?") == false) {\r
                        return;\r
                }\r
        }\r
 \r
-       if(editIndex < 0) {\r
+       if (editIndex < 0) {\r
                var entry = new Object();\r
                var dateRfc3339 = getDate();\r
                entry.id = pageAddr + "?" + dateRfc3339;\r
@@ -74,7 +74,7 @@ function applyChange() {
  */\r
 function openMixiWindow() {\r
        // 日記が選択されていない場合は何もしない\r
-       if(editIndex < 0) {\r
+       if (editIndex < 0) {\r
                return;\r
        }\r
 \r
@@ -98,7 +98,7 @@ function mixiWrapper(contents) {
        var target_element;\r
 \r
        // ニコニコ動画のタグを置換\r
-       while( target_tag = contents.match(/<iframe[^>]*src=["']http:\/\/ext.nicovideo.jp\/thumb\/[A-Za-z]*\d*["'][^>]*>[^<]*<\/iframe>/i)) {\r
+       while ( target_tag = contents.match(/<iframe[^>]*src=["']http:\/\/ext.nicovideo.jp\/thumb\/[A-Za-z]*\d*["'][^>]*>[^<]*<\/iframe>/i)) {\r
                // src="..."の部分だけ抜き出す\r
                target_element = target_tag[0].match(/src=["'][^"']*["']/i);\r
                target_element = '&lt;externalvideo src=&quot;NC:' + target_element[0].replace(/src=["']http:\/\/ext.nicovideo.jp\/thumb\/|["']/ig, "") + ':D&quot;&gt;';\r
@@ -107,7 +107,7 @@ function mixiWrapper(contents) {
        }\r
 \r
        // Aタグを変換する\r
-       while(contents.match(/<a[^>]*>/)) {\r
+       while (contents.match(/<a[^>]*>/)) {\r
                // 置換対象のAタグを抽出する\r
                target_tag = contents.match(/<a[^>]*>/i);\r
                // href="..."の部分のみを抜き出す\r
@@ -121,7 +121,7 @@ function mixiWrapper(contents) {
        }\r
 \r
        // ブロック要素のタグが存在した場合、改行をその後に挿入します。\r
-       if(document.getElementById("isCoverBlockTag").checked) {\r
+       if (document.getElementById("isCoverBlockTag").checked) {\r
                contents = contents.replace(/<(div|h\d)[^>]*>/ig, "-----------------------------------------------------------------------------\n");\r
                contents = contents.replace(/(\n|)<\/(div|h\d)>/ig, "\n-----------------------------------------------------------------------------\n");\r
        } else {\r
@@ -151,16 +151,16 @@ function mixiWrapper(contents) {
  * @param {int} index entryListから削除される記事のインデックス\r
  */\r
 function removeEntry(index) {\r
-       if(editIndex == 0) {\r
+       if (editIndex == 0) {\r
                entryList.splice(editIndex, 1);\r
                refleshEntrylistBox();\r
                editIndex = -1;\r
 \r
-               document.getElementById("stdout").value = ""\r
+               document.getElementById("stdout").value = "";\r
                document.getElementById("entry_title").value = "";\r
                document.getElementById("entry_stdin").value = "";\r
        }\r
-       if(editIndex > 0) {\r
+       if (editIndex > 0) {\r
                var prevIndex = document.getElementById("logBox").selectedIndex - 1;\r
                entryList.splice(editIndex, 1);\r
                refleshEntrylistBox();\r
@@ -183,7 +183,7 @@ function allRemoveEntry() {
        editIndex = -1;\r
        refleshEntrylistBox();\r
 \r
-       document.getElementById("stdout").value = ""\r
+       document.getElementById("stdout").value = "";\r
        document.getElementById("entry_title").value = "";\r
        document.getElementById("entry_stdin").value = "";\r
 }\r
@@ -196,7 +196,7 @@ function initialize() {
        outputValidateMode = $("#feedblog_outputvalidatemode").val();\r
        logXmlUrl = $("#feedblog_loglistxmlurl").val();\r
 \r
-       if(outputValidateMode == "1") {\r
+       if (outputValidateMode == "1") {\r
                document.getElementById("feedblog_addcontentbr").checked = true;\r
        } else {\r
                document.getElementById("feedblog_addcontentbr").checked = false;\r
@@ -230,8 +230,8 @@ function logXMLLoader() {
                        // 読み込んだ要素をStoreに格納して表示\r
                        var boxBuffer = [];\r
                        boxBuffer.push("<form name='logform'><select name='logbox' onchange='xmlLoader(this.options[this.selectedIndex].value)'>");\r
-                       for(var i = 0; i < separateTag.length; i++) {\r
-                               if(i == 0) {\r
+                       for (var i = 0; i < separateTag.length; i++) {\r
+                               if (i == 0) {\r
                                        initUrl = separateTag[i].getElementsByTagName("path")[0].firstChild.nodeValue;\r
                                }\r
                                boxBuffer.push("<option value='" + separateTag[i].getElementsByTagName("path")[0].firstChild.nodeValue + "'/>" + separateTag[i].getElementsByTagName("display")[0].firstChild.nodeValue + " (" + separateTag[i].getElementsByTagName("path")[0].firstChild.nodeValue + ")" + "</option>");\r
@@ -275,7 +275,7 @@ function analyzeTargetXml(xmlData) {
        entryList = [];\r
 \r
        feedInfo = new FeedInfo(rootTag[0]);\r
-       for(var i = 0; i < entryTag.length; i++) {\r
+       for (var i = 0; i < entryTag.length; i++) {\r
                entryList.push(new Entry(entryTag[i]));\r
        }\r
 \r
@@ -285,6 +285,7 @@ function analyzeTargetXml(xmlData) {
        refleshEntrylistBox();\r
        document.getElementById("entry_title").value = "";\r
        document.getElementById("entry_stdin").value = "";\r
+       document.getElementById("entry_category").innerHTML = "";\r
        document.getElementById("stdout").value = "";\r
        editIndex = -1;\r
 \r
@@ -329,7 +330,7 @@ function applyFeedinfo() {
  * @param {int} index\r
  */\r
 function entryLoader(index) {\r
-       if(index < 0) {\r
+       if (index < 0) {\r
                document.getElementById("entry_title").value = "";\r
                document.getElementById("entry_stdin").value = "";\r
                addTagSelectBoxFromCategory([]);\r
@@ -352,7 +353,7 @@ function refleshEntrylistBox() {
        var stringBuffer = [];\r
        stringBuffer.push("<form name='logform'><select id='logBox' onchange='entryLoader(this.options[this.selectedIndex].value)'>");\r
        stringBuffer.push("<option value='-1'>新規作成</option>");\r
-       for(var i = 0; i < entryList.length; i++) {\r
+       for (var i = 0; i < entryList.length; i++) {\r
                stringBuffer.push("<option value='" + i + "'/>" + entryList[i].title + "</option>");\r
        }\r
        stringBuffer.push("</select></form>");\r
@@ -392,16 +393,16 @@ function Entry(obj) {
        var categoryList = [];\r
        var categories = $("category", obj);\r
        var tempCategory = {};\r
-       for(var i = 0; i < categories.length; i++) {\r
+       for (var i = 0; i < categories.length; i++) {\r
                tempCategory = {\r
                        "term" : categories.eq(i).attr("term"),\r
                        "label" : categories.eq(i).attr("label")\r
                };\r
                categoryList.push(tempCategory);\r
        }\r
-       this.category = categoryList\r
+       this.category = categoryList;\r
 \r
-       if(inputValidateMode == 1) {\r
+       if (inputValidateMode == 1) {\r
                this.content = this.content.replace(/[\r\n]|\r\n/g, "");\r
                this.content = this.content.replace(/<br[ \/]*>/ig, "\n");\r
                this.content = this.content.replace(/^[ \t]*/mg, "");\r
@@ -433,9 +434,9 @@ function toXml(finfo, elist) {
        stringBuffer.push('</author>');\r
        stringBuffer.push('');\r
 \r
-       for(var i = 0; i < elist.length; i++) {\r
+       for (var i = 0; i < elist.length; i++) {\r
                var temp_content;\r
-               if(document.getElementById("feedblog_addcontentbr").checked) {\r
+               if (document.getElementById("feedblog_addcontentbr").checked) {\r
                        temp_content = xmlAttrContentEscape(convertContent(elist[i].content));\r
                } else {\r
                        temp_content = xmlAttrContentEscape(elist[i].content);\r
@@ -450,7 +451,7 @@ function toXml(finfo, elist) {
                stringBuffer.push('<link href="' + elist[i].link + '" />');\r
                stringBuffer.push('<content type="html">' + temp_content + '</content>');\r
 \r
-               for(var j = 0; j < elist[i].category.length; j++) {\r
+               for (var j = 0; j < elist[i].category.length; j++) {\r
                        var tmpElist = elist[i].category[j];\r
                        stringBuffer.push('<category term="' + tmpElist["term"] + '" label="' + tmpElist["label"] + '"/>');\r
                }\r
@@ -469,7 +470,7 @@ function toXml(finfo, elist) {
  * @param {String} content\r
  */\r
 function convertContent(content) {\r
-       if(document.getElementById("feedblog_addcontentbr").checked) {\r
+       if (document.getElementById("feedblog_addcontentbr").checked) {\r
                content = content.replace(/[\n\r]|\r\n/g, "<br>\n");\r
        } else {\r
                content = content.replace(/<br>/ig, "\n");\r
@@ -522,15 +523,15 @@ function getDate() {
        var sSecond = dNow.getSeconds();\r
 \r
        // 10以下の時は頭に"0"を挿入\r
-       if(sMonth < 10)\r
+       if (sMonth < 10)\r
                sMonth = "0" + sMonth;\r
-       if(sDate < 10)\r
+       if (sDate < 10)\r
                sDate = "0" + sDate;\r
-       if(sHour < 10)\r
+       if (sHour < 10)\r
                sHour = "0" + sHour;\r
-       if(sMinute < 10)\r
+       if (sMinute < 10)\r
                sMinute = "0" + sMinute;\r
-       if(sSecond < 10)\r
+       if (sSecond < 10)\r
                sSecond = "0" + sSecond;\r
 \r
        return sYear + "-" + sMonth + "-" + sDate + "T" + sHour + ":" + sMinute + ":" + sSecond + "+09:00";\r
@@ -543,9 +544,9 @@ function getTags() {
        var tagList = [];\r
        var tagListHtml = $("*[name=tag]");\r
        var tagTemp = {};\r
-       for(var i = 0; i < tagListHtml.length; i++) {\r
+       for (var i = 0; i < tagListHtml.length; i++) {\r
                // 各tag要素を取得して配列に格納\r
-               if(tagListHtml.eq(i).val() != "") {\r
+               if (tagListHtml.eq(i).val() != "") {\r
                        tagTemp = {\r
                                "term" : tagListHtml.eq(i).val(),\r
                                "label" : tagListHtml.eq(i).find(":selected").text()\r
@@ -562,18 +563,20 @@ function getTags() {
  */\r
 function getDefaultTags() {\r
        // デフォルトのタグ一覧を取得\r
+       // $term1,$label1|$term2,$label2 ... で定義されている\r
        var plainTagText = $("#feedblog_tagdefine").val();\r
        var tagList = [];\r
        var tagTemp = {};\r
+       // 値が空のタグを初期値として先頭に追加\r
        tagList.push({\r
                "term" : "",\r
                "label" : "タグを選択してください"\r
        });\r
-       for(var i = 0; i < plainTagText.split('/').length; i++) {\r
+       for (var i = 0; i < plainTagText.split('|').length; i++) {\r
                // 各tag要素を取得して配列に格納\r
                tagTemp = {\r
-                       "term" : plainTagText.split('/')[i].split(',')[0],\r
-                       "label" : plainTagText.split('/')[i].split(',')[1]\r
+                       "term" : plainTagText.split('|')[i].split(',')[0],\r
+                       "label" : plainTagText.split('|')[i].split(',')[1]\r
                };\r
                tagList.push(tagTemp);\r
        }\r
@@ -589,7 +592,7 @@ function addTagSelectBox() {
        var addHtml = [];\r
 \r
        addHtml.push('<select name="tag">');\r
-       for(var i = 0; i < tagList.length; i++) {\r
+       for (var i = 0; i < tagList.length; i++) {\r
                addHtml.push('<option value="' + tagList[i]["term"] + '">' + tagList[i]["label"] + '</option>');\r
        }\r
        addHtml.push('</select>');\r
@@ -602,7 +605,7 @@ function addTagSelectBox() {
  */\r
 function addTagSelectBoxFromCategory(categoryList) {\r
        $("#entry_category").html("");\r
-       for(var j = 0; j < categoryList.length; j++) {\r
+       for (var j = 0; j < categoryList.length; j++) {\r
                // 選択対象を取得\r
                var selectedTagTerm = categoryList[j]["term"];\r
                var selectedTagLabel = categoryList[j]["label"];\r
@@ -611,8 +614,8 @@ function addTagSelectBoxFromCategory(categoryList) {
                var tagList = getDefaultTags();\r
                var addHtml = [];\r
                addHtml.push('<select name="tag">');\r
-               for(var i = 0; i < tagList.length; i++) {\r
-                       if(tagList[i]["term"] == selectedTagTerm && tagList[i]["label"] == selectedTagLabel) {\r
+               for (var i = 0; i < tagList.length; i++) {\r
+                       if (tagList[i]["term"] == selectedTagTerm && tagList[i]["label"] == selectedTagLabel) {\r
                                addHtml.push('<option value="' + tagList[i]["term"] + '" selected="selected">' + tagList[i]["label"] + '</option>');\r
                                selectedTagSetFlag = true;\r
                        } else {\r
@@ -620,7 +623,7 @@ function addTagSelectBoxFromCategory(categoryList) {
                        }\r
                }\r
 \r
-               if(!selectedTagSetFlag) {\r
+               if (!selectedTagSetFlag) {\r
                        addHtml.push('<option value="' + selectedTagTerm + '" selected="selected">' + selectedTagLabel + '</option>');\r
                }\r
 \r