Bangumi-Rename-Related-Subjects

Quickly rename all related subjects at the same time.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// Generated by CoffeeScript 1.11.1
// ==UserScript==
// @name        Bangumi-Rename-Related-Subjects
// @namespace   BRRS
// @description Quickly rename all related subjects at the same time.
// @include     /^https?:\/\/((bgm|bangumi)\.tv|chii\.in)\/subject\/\d+\/add_related\/subject/
// @version     1.1.4
// @grant       none
// ==/UserScript==
// Generated by CoffeScript ;) ;
'use strict';
var Bootstrap, Core, EventBinding, Wcode, formhash, pagesid, platform, platforms, submitCue, templates;

platforms = {
  book: [
    {
      id: 1001,
      name: '漫画',
      meta: 'Manga'
    }, {
      id: 1002,
      name: '小说',
      meta: 'Novel'
    }, {
      id: 1003,
      name: '画集',
      meta: 'Book'
    }, {
      id: 0,
      name: '其它',
      meta: 'Book'
    }
  ],
  anime: [
    {
      id: 1,
      name: 'TV',
      meta: 'TVAnime'
    }, {
      id: 2,
      name: 'OVA',
      meta: 'OVA'
    }, {
      id: 3,
      name: '剧场版',
      meta: 'Movie'
    }, {
      id: 0,
      name: '其它',
      meta: 'Anime'
    }
  ],
  music: [],
  game: [],
  real: [
    {
      id: 1,
      name: '日剧',
      meta: 'Television'
    }, {
      id: 2,
      name: '欧美剧',
      meta: 'Television'
    }, {
      id: 3,
      name: '华语剧',
      meta: 'Television'
    }, {
      id: 0,
      name: '其它',
      meta: 'Television'
    }
  ]
};

formhash = $('input[name="formhash"]').val();

platform = window.location.href.match(/add_related\/subject\/(anime|book|music|game|real)/)[1];

pagesid = window.location.href.match(/subject\/(\d+)\/add_related/)[1];

submitCue = [];

templates = {};

templates.platforms = (function() {
  var i, j, len, platformContent, ref, tpl;
  platformContent = '';
  tpl = '<label for="platform-{{bgmid}}-{{id}}"><input id="platform-{{bgmid}}-{{id}}" type="radio" value="{{id}}" name="platform-{{bgmid}}"> {{name}}</label>';
  ref = platforms[platform];
  for (j = 0, len = ref.length; j < len; j++) {
    i = ref[j];
    platformContent += tpl.replace(/{{meta}}/g, i.meta).replace(/{{id}}/g, i.id).replace(/{{name}}/g, i.name);
  }
  return platformContent;
})();

templates.css = "/*-----------------------------------------------------*|*-- Global  ------------------------------------------*|\n\*-----------------------------------------------------*/\n#brrs-workspace .hidden {\n  display: none; }\n\n#brrs-workspace .chiiBtn.large {\n  margin: 5px 2px;\n  padding: 5px 10px; }\n\n/*-----------------------------------------------------*|*-- Launcher & Loading -------------------------------*|\n\*-----------------------------------------------------*/\n#brrs-workspace-launcher,\n#brrs-workspace-loading {\n  width: 250px;\n  margin: 170px auto;\n  font-size: 18px;\n  text-align: center; }\n  #brrs-workspace-loading .brrs-progress {\n    margin-top: 3px;\n    height: 2px;\n    border: none;\n    background: #f09199; }\n\n/*-----------------------------------------------------*|*-- Toolkit ------------------------------------------*|\n\*-----------------------------------------------------*/\n#brrs-toolkit {\n  width: 100%; }\n  #brrs-toolkit .brrs-col-main {\n    margin-left: 5%; }\n\n/*-----------------------------------------------------*|*-- Editor -------------------------------------------*|\n\*-----------------------------------------------------*/\n#brrs-subjects-editor {\n  width: 100%; }\n  #brrs-subjects-editor .renameSubject {\n    width: calc(100% - 20px);\n    height: 15px; }\n  #brrs-subjects-editor .renameSubject {\n    width: 40px;\n    height: 15px; }\n  #brrs-subjects-editor .item {\n    height: 40px;\n    background: #F9F9F9;\n    border-bottom: 1px solid #E0E0E0;\n    clear: both;\n    padding: 5px 10px; }\n.brrs-editor-item {\n  padding: 6px 0 3px 0;\n  border-left: 2px solid #369cf8;\n  border-bottom: 1px solid #D9D9D9; }\n  .brrs-editor-item:hover {\n    background: #F4F4F4; }\n  [class^=\"brrs-col-\"] {\n    line-height: 24px;\n    vertical-align: middle;\n    overflow: hidden;\n    float: left; }\n  .brrs-col-close {\n    text-align: center;\n    font-size: 18px;\n    width: 2%; }\n  .brrs-col-id {\n    text-align: center;\n    padding-right: 3px;\n    width: calc(3% - 3px); }\n  .brrs-col-main {\n    width: 60%; }\n  .brrs-col-platform {\n    width: 23%; }\n  .brrs-col-actions {\n    width: 12%; }\n\n  .brrs-editor-item .details {\n    margin-left: 5%; }\n\n  #brrs-workspace-editor input,\n  #brrs-workspace-editor select {\n    vertical-align: middle; }\n  #brrs-workspace-editor input.title {\n    width: calc(100% - 20px); }\n  #brrs-workspace-editor label {\n    padding: 0 6px; }\n\n/*-----------------------------------------------------*|*-- Previewer ----------------------------------------*|\n\*-----------------------------------------------------*/\n\n.brrs-col-left,\n.brrs-col-right {\n  min-width: calc(50% - 28px);\n  width: calc(50% - 28px);\n  padding: 0 14px; }\n\n.brrs-previewer-item {\n  width: 750px;\n  margin: 10px auto;\n  border-radius: 10px 10px 0 0;\n  box-shadow: 1px 1px 7px rgba(0, 0, 0, .3); }\n  .brrs-previewer-item .header {\n    background: #F09199;\n    color: #FFF;\n    padding: 15px 20px 10px;\n    border-radius: 10px 10px 0 0; }\n    .brrs-previewer-item .header h3 {\n      font-size: 18px; }\n      .brrs-previewer-item .header h3 small {\n        font-size: 10px; }\n      .brrs-previewer-item .header h3 a {\n        color: #FFF; }\n  .brrs-previewer-item .thead .left,\n  .brrs-previewer-item .thead .right {\n    width: 50%;\n    height: 6px;\n    float: left;\n    text-align: center; }\n  .brrs-previewer-item .thead .left {\n    background: #31A7DE; }\n  .brrs-previewer-item .thead .right {\n    background: #56B985; }\n  .brrs-previewer-item .content {}\n    .brrs-previewer-item .content .title {\n      font-size: 18px;\n      padding: 0; }\n      .brrs-previewer-item .content .title .brrs-col-left,\n      .brrs-previewer-item .content .title .brrs-col-right {\n        line-height: 35px; }\n      .brrs-previewer-item .content .title small {\n        color: #555;\n        font-size: 12px; }\n    .brrs-previewer-item .content .summary {\n      overflow: auto;\n      overflow-wrap: break-word;\n      word-break: break-all; }\n\n#brrs-workspace-previewer .cancel,\n#brrs-workspace-previewer .submit {\n  text-align: center; }\n\n/*-----------------------------------------------------*|*-- Footer -------------------------------------------*|\n\*-----------------------------------------------------*/\n#brrs-footer {\n  text-align: right;\n  color: #999;\n  font-size: 12; }";

templates.workspace = (function() {
  var platformContent, tpl;
  platformContent = templates.platforms.replace(/{{bgmid}}/g, 'master');
  return tpl = "<style>\n  " + templates.css + "\n</style>\n<div id=\"brrs-workspace\" class=\"columns clearit\" style=\"padding: 10px 0;\">\n  <div id=\"brrs-workspace-loading\" class=\"hidden clearit\">\n    <p>少女祈祷中……(<span class=\"brrs-var-loaded\"></span>/<span class=\"brrs-var-total\"></span>)</p>\n    <div class=\"brrs-progress\"></div>\n  </div>\n  <div id=\"brrs-workspace-editor\" class=\"hidden clearit\">\n    <div id=\"brrs-toolkit\">\n      <div class=\"brrs-col-main\">\n        <a class=\"chiiBtn\" href=\"#brrs-tool-restore\" data-action=\"restore\">还原所有操作</a>/\n        <a class=\"chiiBtn\" href=\"#brrs-tool-removechs\" data-action=\"removechs\">去中文名</a>\n        <!-- a class=\"chiiBtn\" href=\"#brrs-tool-removepattern\" data-action=\"removepattern\">批量删除标题指定字符</a -->\n        <div id=\"brrs-toolkit-settitle\">\n          <label>\n            标题:\n            <input type=\"text\" name=\"pattern\" class=\"inputtext\" style=\"width: 40%\" value=\"{{SeriesTitle}} ({{SeriesNumber}})\">\n          </label>\n          <label>\n            序号起始:\n            <input type=\"text\" name=\"seriesstart\" class=\"inputtext\" style=\"width: 20px;\" value=\"1\">\n          </label>\n          <a class=\"chiiBtn\" href=\"#brrs-tool-settitle\" data-action=\"settitle\">批量替换标题</a>\n          <p>{{SeriesTitle}} = 系列标题;{{SeriesNumber}} = 序号</p>\n        </div>\n        <div id=\"brrs-toolkit-filter\">\n	      <label>\n	        作用范围:\n            <input type=\"number\" name=\"start\" class=\"inputtext\" style=\"width: 40px;\" value=\"0\"> ~\n            <input type=\"number\" name=\"end\" class=\"inputtext\" style=\"width: 40px;\" value=\"0\">\n          </label>\n	    </div>\n        <div id=\"brrs-toolkit-removepattern\" class=\"hidden\">\n          <h3>批量删除标题指定字符</h3>\n        </div>\n      </div>\n\n      <div class=\"brrs-col-platform\">\n        " + platformContent + "\n      </div>\n      <div class=\"fixit clearit\"></div>\n    </div>\n    <div id=\"brrs-subjects-editor\" class=\"clearit\">\n    </div>\n    <a class=\"chiiBtn large\" id=\"brrs-preview\" href=\"#brrs-preview\">编辑完成,点击预览</a>\n  </div>\n  <div id=\"brrs-workspace-previewer\" class=\"hidden clearit\">\n    <div id=\"brrs-subjects-previewer\" class=\"clearit\">\n    </div>\n    <div class=\"cancel\">\n      <a class=\"chiiBtn large\" id=\"brrs-returneditor\" href=\"#brrs-returneditor\">返回编辑</a>\n    </div>\n    <div class=\"submit\">\n      <label>编辑摘要:<input type=\"text\" name=\"brrs-edit-summary\" class=\"inputtext\" value=\"标题修正+类型修正\"></label>\n      <a class=\"chiiBtn large\" id=\"brrs-save\" href=\"#brrs-submit\">确认完毕,点击提交</a>\n    </div>\n  </div>\n  <div id=\"brrs-footer\" class=\"clearit\">\n    <p>Powered by BRRS.</p>\n    <p>脚本问题反馈/功能请求:<a href=\"/group/topic/311647\" target=\"_blank\">小组讨论帖</a> /\n                              <a href=\"https://github.com/bangumi/scripts/issues\" target=\"_blank\">GitHub Issues</a>.</p>\n  </div>\n</div>";
})();

templates.editor = (function() {
  var tpl;
  return tpl = "<div class=\"brrs-editor-item clearit\" data-id=\"{{id}}\" data-bgmid=\"{{bgmid}}\">\n  <div class=\"brrs-col-close\"><a class=\"brrs-remove\" href=\"#brrs-removeitem\" data-action=\"removeitem\" data-id=\"{{id}}\">&times;</a></div>\n  <div class=\"brrs-col-id\">{{id}}</div>\n  <div class=\"brrs-col-main\"><input type=\"text\" class=\"inputtext title\" value=\"{{title}}\" placeholder=\"{{title}}\" name=\"title\" data-id=\"{{id}}\"></div>\n  <div class=\"brrs-col-platform\">" + templates.platforms + "</div>\n  <div class=\"brrs-col-actions\"><a class=\"chiiBtn\" href=\"#brrs-editor-details\" data-action=\"editdetails\" data-id=\"{{id}}\">编辑详细信息</a></div>\n  <div class=\"details clearit hidden\">\n    <textarea class=\"quick\" name=\"infobox\" rows=\"15\" style=\"width: 48%\"></textarea>\n    <textarea class=\"quick\" name=\"summary\" rows=\"15\" style=\"width: 48%\"></textarea>\n    <p><a class=\"chiiBtn large\" href=\"#brrs\" data-action=\"closedetails\" data-id=\"{{id}}\">收起详细信息</a></p>\n  </div>\n  <div class=\"fixit clearit\"></div>\n</div>";
})();

templates.previewer = "<div class=\"brrs-previewer-item\" data-id=\"{{id}}\" data-bgmid=\"{{bgmid}}\">\n  <div class=\"header\"><h3>#<span>{{bgmid}}</span> <small><a href=\"/subject/{{bgmid}}\" target=\"_blank\">在新分页开启</a></small></h3></div>\n  <div class=\"thead\">\n    <div class=\"left\"></div>\n    <div class=\"right\"></div>\n  </div>\n  <div class=\"content\">\n    <div class=\"title clearit\">\n      <div class=\"brrs-col-left\">\n        {{left.title}} <small> - {{left.platform}}</small>\n      </div>\n      <div class=\"brrs-col-right\">\n        {{right.title}} <small> - {{right.platform}}</small>\n      </div>\n    </div>\n    <div class=\"infobox clearit\">\n      <div class=\"brrs-col-left\">\n        {{left.infobox}}\n      </div>\n      <div class=\"brrs-col-right\">\n        {{right.infobox}}\n      </div>\n    </div>\n    <div class=\"summary clearit\">\n      <div class=\"brrs-col-left\">\n        {{left.summary}}\n      </div>\n      <div class=\"brrs-col-right\">\n        {{right.summary}}\n      </div>\n    </div>\n  </div>\n</div>";

Core = {
  workspace: function(name) {
    $('[id^=brrs-workspace-]').hide();
    return $("#brrs-workspace-" + name).show();
  },
  loading: {
    setTotal: function(total) {
      return $('.brrs-var-total').html(total);
    },
    setProgress: function(loaded) {
      var prg;
      $('.brrs-var-loaded').html(loaded);
      prg = (parseInt($('.brrs-var-loaded').text())) / (parseInt($('.brrs-var-total').text()));
      $('#brrs-workspace-loading .brrs-progress').stop();
      return $('#brrs-workspace-loading .brrs-progress').animate({
        width: (prg * 100) + '%'
      }, 50);
    },
    getTotal: function() {
      return parseInt($('.brrs-var-total').text());
    },
    getLoaded: function() {
      return parseInt($('.brrs-var-loaded').text());
    }
  },
  toolkit: {
    restore: function() {
      $('#brrs-subjects-editor input[type="text"], #brrs-subjects-editor textarea').each(function() {
        return $(this).val($(this).attr('placeholder'));
      });
      return $('.brrs-editor-item .brrs-col-platform').each(function() {
        return $(this).find("[value=\"" + ($(this).attr('data-origin')) + "\"]").attr('checked', true);
      });
    },
    removechs: function() {
      return $('#brrs-subjects-editor textarea[name="infobox"]').each(function() {
        var ref;
        if (!(((ref = $(this).val().match(/中文名=(.+)/)) != null ? ref[1].trim().length : void 0) > 0)) {
          return;
        }
        return $(this).val($(this).val().replace(/中文名=(.+)/, '中文名= '));
      });
    },
    settitle: function() {
      var end, i, pattern, start;
      pattern = $('#brrs-toolkit-settitle input[name="pattern"]').val();
      i = parseInt($('#brrs-toolkit-settitle input[name="seriesstart"]').val());
      if (pattern.match(/{{SeriesTitle}}/) != null) {
        pattern = pattern.replace(/{{SeriesTitle}}/g, $('.nameSingle a').text());
      }
      start = Core.toolkit.filter.getStart();
      end = Core.toolkit.filter.getEnd();
      return $('#brrs-subjects-editor input.title').each(function() {
        var id;
        id = parseInt($(this).attr('data-id'));
        if (id < start || id > end) {
          return;
        }
        return $(this).val(pattern.replace(/{{SeriesNumber}}/g, i++));
      });
    },
    filter: {
      setStart: function(val) {
        return $('#brrs-toolkit-filter input[name="start"]').val(parseInt(val));
      },
      setEnd: function(val) {
        return $('#brrs-toolkit-filter input[name="end"]').val(parseInt(val));
      },
      getStart: function(val) {
        return parseInt($('#brrs-toolkit-filter input[name="start"]').val());
      },
      getEnd: function(val) {
        return parseInt($('#brrs-toolkit-filter input[name="end"]').val());
      },
      refresh: function() {
        var end, start;
        start = this.getStart();
        end = this.getEnd();
        return $('.brrs-editor-item').each(function() {
          var id;
          id = parseInt($(this).attr('data-id'));
          if (id < start || id > end) {
            return $(this).css({
              opacity: 0.4
            });
          } else {
            return $(this).css({
              opacity: 1
            });
          }
        });
      }
    }
  },
  editor: {
    insert: function(id, data) {
      var tpl;
      tpl = templates.editor;
      tpl = tpl.replace(/{{id}}/g, id);
      if (data.bgmid != null) {
        tpl = tpl.replace(/{{bgmid}}/g, data.bgmid);
      }
      if (data.title != null) {
        tpl = tpl.replace(/{{title}}/g, data.title);
      }
      return $('#brrs-subjects-editor').append(tpl);
    },
    remove: function(id) {
      return $(".brrs-editor-item[data-id=\"" + id + "\"]").remove();
    },
    details: {
      show: function(id) {
        var selector;
        selector = ".brrs-editor-item[data-id=\"" + id + "\"] .details";
        $(".brrs-editor-item[data-id=\"" + id + "\"] a[data-action=\"editdetails\"]").fadeOut(700);
        $(selector).css('height', 0);
        $(selector).show();
        return $(selector).animate({
          'height': '362px'
        }, 700, function() {
          $(this).css('min-height', '362px');
          return $(this).css('height', 'auto');
        });
      },
      hide: function(id) {
        var selector;
        selector = ".brrs-editor-item[data-id=\"" + id + "\"] .details";
        $(selector).css('height', '362px');
        $(selector).css('min-height', 0);
        $(selector).animate({
          'height': 0
        }, 700, function() {
          return $(selector).hide();
        });
        return $(".brrs-editor-item[data-id=\"" + id + "\"] a[data-action=\"editdetails\"]").fadeIn(700);
      }
    },
    setPlatform: function(bgmid, platform) {
      var origin, selector;
      selector = "input[name=\"platform-" + bgmid + "\"][value=\"" + platform + "\"]";
      origin = $(selector).parent().attr('data-origin');
      $(selector).attr('checked', 'true');
      if (origin == null) {
        $(selector).parent().parent().attr('data-origin', platform);
      }
      if (origin == null) {
        return $(selector).parent().parent().attr('data-origintext', $(selector).parent().text().trim());
      }
    },
    setInput: function(bgmid, field, text) {
      var selector;
      selector = ".brrs-editor-item[data-bgmid=\"" + bgmid + "\"] textarea[name=\"" + field + "\"]";
      $(selector).val(text);
      if (!$(selector).attr('placeholder')) {
        return $(selector).attr('placeholder', text);
      }
    }
  },
  previewer: {
    insert: function(id, bgmid, left, right) {
      var tpl;
      tpl = templates.previewer;
      tpl = tpl.replace(/{{id}}/g, id);
      tpl = tpl.replace(/{{bgmid}}/g, bgmid);
      tpl = tpl.replace(/{{left.title}}/, left.title);
      tpl = tpl.replace(/{{left.platform}}/, left.platform);
      tpl = tpl.replace(/{{left.infobox}}/, left.infobox);
      if (left.summary.trim() === '') {
        tpl = tpl.replace(/{{left.summary}}/, '&nbsp');
      } else {
        tpl = tpl.replace(/{{left.summary}}/, left.summary.replace(/\n/g, '<br>'));
      }
      tpl = tpl.replace(/{{right.title}}/, right.title);
      tpl = tpl.replace(/{{right.platform}}/, right.platform);
      tpl = tpl.replace(/{{right.infobox}}/, right.infobox);
      if (right.summary.trim() === '') {
        tpl = tpl.replace(/{{right.summary}}/, '&nbsp');
      } else {
        tpl = tpl.replace(/{{right.summary}}/, right.summary.replace(/\n/g, '<br>'));
      }
      return $('#brrs-subjects-previewer').append(tpl);
    }
  }
};

Wcode = {
  parse: function (wcode) {
    // copied from bangumi's official WCODEParse(), https://bgm.tv/min/g=js?r506
    var json = {};
    var foo = wcode.split('\n');
    var head = '';
    for (var i = 0; i < foo.length; i++) {
      var line = foo[i];
      if (line.substr(0, 1) === '{') {
        head = head + line + '\n';
      } else if (line.indexOf('=') != -1) {
        var key = $.trim(line.substr(1, line.indexOf('=') - 1));
        line = $.trim(line);
        var value = null;
        if (/=\s*{$/.test(line)) {
          i++;
          line = foo[i];
          line = $.trim(line);
          value = new Object();
          var subKey = 0;
          while (i < foo.length && !/^}$/.test(line) && !/^\|/.test(line)) {
            if (/^\[(.+)\]$/.test(line)) {
              var subVal = RegExp.$1;
              if (/^([^|]+)[|](.*)$/i.test(subVal)) {
                value[subKey] = {
                  key: RegExp.$1,
                  value: RegExp.$2.replace(/\\\|/g, '|')
                };
              } else {
                value[subKey] = subVal.replace(/\\\|/g, '|');
              }
              subKey++;
            }
            i++;
            line = foo[i];
            line = $.trim(line);
          }
          line = $.trim(line);
        } else {
          value = $.trim(line.substr(line.indexOf('=') + 1));
        }
        json[key] = value;
      }
    }
    return json;
  },
  toHtml: function(json) {
    var i, j, key, len, retval, value;
    retval = '<ul id="infobox">';
    for (key in json) {
      value = json[key];
      retval += '<li>';
      retval += "<span class=\"tip\">" + key + ": </span>";
      if (typeof value === 'string') {
        retval += value;
      } else {
        for (j = 0, len = value.length; j < len; j++) {
          i = value[j];
          retval += '</li>';
          retval += "<li class=\"tip\" style=\"visibility:hidden\">.</span> " + i;
        }
      }
      retval += '</li>';
    }
    return retval += '</ul>';
  }
};

$('<a class="chiiBtn rr" id="brrs-launcher-normal" href="#">BRRS</a>').insertAfter('#modifyOrder');

$('<a class="chiiBtn rr" id="brrs-launcher-offprint" href="#">BRRS 单行本</a>').insertAfter('#modifyOrder');

Bootstrap = function(subjects) {
  var j, key, len, results, value;
  $('#brrs-workspace').remove();
  $(templates.workspace).insertBefore('.mainWrapper .columns');
  Core.loading.setTotal(subjects.length);
  Core.loading.setProgress(0);
  Core.workspace('loading');
  Core.toolkit.filter.setStart(0);
  Core.toolkit.filter.setEnd(subjects.length - 1);
  results = [];
  for (key = j = 0, len = subjects.length; j < len; key = ++j) {
    value = subjects[key];
    Core.editor.insert(key, value);
    $.ajaxSetup({
      async: false
    });
    results.push($.get("/subject/" + value.bgmid + "/edit_detail", function(data) {
      var bgmid;
      Core.loading.setProgress(Core.loading.getLoaded() + 1);
      bgmid = data.match(/<a href="\/subject\/(\d+)" title="[^"]*" property="v:itemre/)[1];
      Core.editor.setInput(bgmid, 'infobox', data.match(/subject_infobox"[^>]+>([\S\s]*?)<\/textarea>/m)[1]);
      Core.editor.setInput(bgmid, 'summary', data.match(/subject_summary"[^>]+>([\S\s]*?)<\/textarea>/m)[1]);
      Core.editor.setPlatform(bgmid, (data.match(/value="(\d+)"\s+onclick="WikiTpl\('[^']+'\)"\s+checked>/) || ['', ''])[1]);
      if (Core.loading.getTotal() === Core.loading.getLoaded()) {
        EventBinding();
        return $('#brrs-workspace-loading').fadeOut(1000, function() {
          return Core.workspace('editor');
        });
      }
    }));
  }
  return results;
};

$('#brrs-launcher-normal').click(function() {
  return Bootstrap((function() {
    var retval;
    retval = [];
    $('#crtRelateSubjects > li').each(function() {
      var subject;
      subject = {};
      subject.bgmid = $(this).attr('item_id');
      subject.title = $(this).find('.title a').text().trim();
      subject.relation = $(this).find('option[selected="true"]').val();
      return retval.push(subject);
    });
    return retval;
  })());
});

$('#brrs-launcher-offprint').click(function() {
  return Bootstrap((function() {
    var retval;
    retval = [];
    $('#crtRelateSubjects > li').each(function() {
      var subject;
      subject = {};
      subject.bgmid = $(this).attr('item_id');
      subject.title = $(this).find('.title a').text().trim();
      subject.relation = $(this).find('option[selected="true"]').val();
      if (subject.relation !== '1003') {
        return;
      }
      return retval.push(subject);
    });
    return retval;
  })());
});

EventBinding = function() {
  $('a[data-action="removeitem"]').click(function() {
    return Core.editor.remove($(this).attr('data-id'));
  });
  $('a[data-action="editdetails"]').click(function() {
    return Core.editor.details.show($(this).attr('data-id'));
  });
  $('a[data-action="closedetails"]').click(function() {
    return Core.editor.details.hide($(this).attr('data-id'));
  });
  $('#brrs-toolkit a[data-action="restore"]').click(function() {
    return Core.toolkit.restore();
  });
  $('#brrs-toolkit a[data-action="removechs"]').click(function() {
    return Core.toolkit.removechs();
  });
  $('#brrs-toolkit a[data-action="settitle"]').click(function() {
    return Core.toolkit.settitle();
  });
  $('#brrs-toolkit-filter input').bind('input', function() {
    return Core.toolkit.filter.refresh();
  });
  $('#brrs-toolkit input[type="radio"]').click(function() {
    var newPlatform;
    newPlatform = $(this).val();
    return $("#brrs-subjects-editor input[value=\"" + ($(this).val()) + "\"]").attr('checked', true);
  });
  $('#brrs-preview').click(function() {
    var end, start;
    $('#brrs-subjects-previewer').html('');
    submitCue = [];
    start = Core.toolkit.filter.getStart();
    end = Core.toolkit.filter.getEnd();
    $('.brrs-editor-item').each(function() {
      var id, left, right;
      id = parseInt($(this).attr('data-id'));
      if (id < start || id > end) {
        return;
      }
      right = {
        bgmid: $(this).attr('data-bgmid'),
        title: $(this).find('input[name="title"]').val().replace(/\r/g, '').trim(),
        platform: $(this).find(':checked').parent().text().trim(),
        platform_id: $(this).find(':checked').val(),
        infobox: $(this).find('textarea[name="infobox"]').val().replace(/\r/g, '').trim(),
        summary: $(this).find('textarea[name="summary"]').val().replace(/\r/g, '').trim()
      };
      left = {
        title: $(this).find('input[name="title"]').attr('placeholder').replace(/\r/g, '').trim(),
        platform: $(this).find('.brrs-col-platform').attr('data-origintext').trim(),
        platform_id: $(this).find('.brrs-col-platform').attr('data-origin'),
        infobox: $(this).find('textarea[name="infobox"]').attr('placeholder').replace(/\r/g, '').trim(),
        summary: $(this).find('textarea[name="summary"]').attr('placeholder').replace(/\r/g, '').trim()
      };
      if (left.title === right.title && left.platform === right.platform && left.infobox === right.infobox && left.summary === right.summary) {
        return;
      }
      submitCue.push($.extend({}, right));
      left.infobox = Wcode.toHtml(Wcode.parse(left.infobox));
      right.infobox = Wcode.toHtml(Wcode.parse(right.infobox));
      return Core.previewer.insert($(this).attr('data-id'), $(this).attr('data-bgmid'), left, right);
    });
    Core.workspace('previewer');
    $('html').scrollTop(0);
    return null;
  });
  $('#brrs-save').click(function() {
    var editSummary, i, j, len, postData, results;
    if (!confirm('这样就好了吗?')) {
      return;
    }
    Core.loading.setTotal(submitCue.length);
    Core.loading.setProgress(0);
    Core.workspace('loading');
    editSummary = $('input[name="brrs-edit-summary"]').val().trim() + ' [BRRS:' + pagesid + ']';
    editSummary = editSummary.trim();
    $('html').scrollTop(0);
    results = [];
    for (j = 0, len = submitCue.length; j < len; j++) {
      i = submitCue[j];
      postData = {};
      postData.formhash = formhash;
      postData.submit = '提交修改';
      postData.editSummary = editSummary;
      postData.platform = i.platform_id;
      postData.subject_title = i.title;
      postData.subject_infobox = i.infobox;
      postData.subject_summary = i.summary;
      console.log(postData);
      $.ajaxSetup({
        async: false
      });
      results.push($.post("/subject/" + i.bgmid + "/new_revision", postData, function() {
        Core.loading.setProgress(Core.loading.getLoaded() + 1);
        if (Core.loading.getTotal() === Core.loading.getLoaded()) {
          return window.location.reload();
        }
      }));
    }
    return results;
  });
  return $('#brrs-returneditor').click(function() {
    return Core.workspace('editor');
  });
};