(function(){ var loading = null, site_url = null; $("document").ready(function(){ loading = $("#loading"); bindHandlers(); }) var bindHandlers = function(){ $("#find-channels").on("click",function(){ site_url = $("#site-url-wrapper input[type=text]").val(); $("#site-url-wrapper").fadeOut(); getChannelList(); }) $("#toggle-manual-rss").on("click",function(){ $("#manual-rss-form").slideToggle(); }) $("input[name='source-type']").on("change",function(){ if($(this).val() == "json"){ $("#rss-detect-block").hide(); $("#json-detect-block").show(); }else{ $("#json-detect-block").hide(); $("#rss-detect-block").show(); } }) $("#manual-rss-detect").on("click",function(){ var rss_url = $("#manual-rss-url").val().trim(); if(!rss_url){ alert("請先填寫 RSS 網址"); return; } $.ajax({ url: "/admin/feeds/rss_fields", data: {"url": rss_url}, dataType: "json", type: "get" }).done(function(data){ if(!data.fields || data.fields.length == 0){ alert("偵測不到欄位,請確認 RSS 網址是否正確"); return; } var titleSelect = $("#manual-rss-title-field"); var linkSelect = $("#manual-rss-link-field"); var imageSelect = $("#manual-rss-image-field"); titleSelect.html(""); linkSelect.html(""); imageSelect.html(""); $.each(data.fields, function(i, f){ titleSelect.append(""); linkSelect.append(""); imageSelect.append(""); }) $("#manual-rss-mapping").show(); }) }) $("#json-detect-step1").on("click",function(){ var json_url = $("#manual-rss-url").val().trim(); if(!json_url){ alert("請先填寫網址"); return; } $.ajax({ url: "/admin/feeds/json_top_keys", data: {"url": json_url}, dataType: "json", type: "get" }).done(function(data){ if(data.error){ alert("抓取失敗,請確認網址是否正確、是否為 JSON 格式"); return; } var select = $("#json-list-key-select"); select.html(""); if(data.root_is_array){ select.append(""); } $.each(data.array_keys, function(i, k){ select.append(""); }) if(!data.root_is_array && data.array_keys.length == 0){ alert("偵測不到任何陣列欄位,請確認這個網址回傳的是不是文章列表 JSON"); return; } $("#json-list-key-wrapper").show(); $("#json-field-mapping").hide(); }) }) $("#json-detect-step2").on("click",function(){ var json_url = $("#manual-rss-url").val().trim(); var list_key = $("#json-list-key-select").val(); $.ajax({ url: "/admin/feeds/json_item_fields", data: {"url": json_url, "list_key": list_key}, dataType: "json", type: "get" }).done(function(data){ if(!data.fields || data.fields.length == 0){ alert("偵測不到欄位,請確認列表位置選對了嗎"); return; } var titleSelect = $("#json-title-field"); var subtitleSelect = $("#json-subtitle-field"); var contentSelect = $("#json-content-field"); var timeSelect = $("#json-time-field"); var imageSelect = $("#json-image-field"); var idSelect = $("#json-id-field"); var linkFieldSelect = $("#json-link-field"); titleSelect.html(""); subtitleSelect.html(""); contentSelect.html(""); timeSelect.html(""); imageSelect.html(""); idSelect.html(""); linkFieldSelect.html(""); $.each(data.fields, function(i, f){ titleSelect.append(""); subtitleSelect.append(""); contentSelect.append(""); timeSelect.append(""); imageSelect.append(""); idSelect.append(""); linkFieldSelect.append(""); }) $("#json-field-mapping").show(); }) }) $("input[name='json-link-mode']").on("change",function(){ if($(this).val() == "template"){ $("#json-link-field-wrapper").hide(); $("#json-link-template-wrapper").show(); }else{ $("#json-link-template-wrapper").hide(); $("#json-link-field-wrapper").show(); } }) $("#manual-rss-next").on("click",function(){ var rss_url = $("#manual-rss-url").val().trim(); var title = $("#manual-rss-title").val().trim(); var source_type = $("input[name='source-type']:checked").val(); var channel_key = "announcement"; if(!rss_url || !title){ alert("請把網址、頻道顯示名稱填寫完整"); return; } site_url = rss_url; var title_translations = {}; title_translations[I18n.locale] = title; var feed = { uid: title.replace(/\s+/g,'_') + "_" + Date.now(), url: rss_url, title_translations: title_translations }; if(source_type == "json"){ var list_key = $("#json-list-key-select").val(); var json_title_field = $("#json-title-field").val(); var json_subtitle_field = $("#json-subtitle-field").val(); var json_content_field = $("#json-content-field").val(); var json_time_field = $("#json-time-field").val(); var json_image_field = $("#json-image-field").val(); var json_id_field = $("#json-id-field").val(); var json_link_mode = $("input[name='json-link-mode']:checked").val(); var json_link_field = $("#json-link-field").val(); var json_link_template = $("#json-link-template").val().trim(); if(!json_title_field || !json_id_field){ alert("請完成 JSON 欄位偵測,並至少填寫標題欄位、ID欄位"); return; } if(json_link_mode == "template" && !json_link_template){ alert("請填寫連結樣板"); return; } if(json_link_mode == "field" && !json_link_field){ alert("請選擇連結欄位"); return; } feed.is_json_list = true; feed.json_list_key = list_key; feed.json_id_field = json_id_field; feed.json_title_field = json_title_field; feed.json_subtitle_field = json_subtitle_field; feed.json_content_field = json_content_field; feed.json_time_field = json_time_field; feed.json_image_field = json_image_field; feed.json_link_mode = json_link_mode; feed.json_link_field = json_link_field; feed.json_link_template = json_link_template; }else{ var title_field = $("#manual-rss-title-field").val(); var link_field = $("#manual-rss-link-field").val(); var image_field = $("#manual-rss-image-field").val(); if(!title_field || !link_field){ alert("請把標題欄位、連結欄位填寫完整"); return; } feed.is_rss = true; feed.rss_title_field = title_field; feed.rss_link_field = link_field; feed.rss_image_field = image_field; } var channel = {key: channel_key, title: title}; subscribeFeed($("
"), feed, channel); }) } var getChannelList = function(){ displayLoading(true,"Fetching channels from " + site_url); $.ajax({ url : "/admin/feeds/get_channel_list", data : {"url" : site_url}, dataType : "json", type : "get" }).done(function(channels){ if (channels != null){ $.each(channels.channels,function(index,channel){ var ch = $("