自动同步.js 5.07 KB
// ==UserScript==
// @name         New Userscript
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        http://*/*
// @grant        none
// ==/UserScript==

(function($) {
  'use strict';

  // Your code here...
  var MENU_DATE = {};
  var TAXONOMY_DATE = {};
  var NODE_DATE = {};
  var TAXONOMY_INIT_DATE = {};
  var NODE_INIT_DATE = {};

  function hasStorage(name, date) {
    if (JSON.stringify(date) === '{}') {
      return false;
    }

    if (typeof localStorage.getItem(name) != 'string') {
      localStorage.setItem(name, JSON.stringify(date));
    }

    return !!localStorage.getItem(name);
  }

  function storageOper(_cookieName, obj) {
    var settingObj = {};

    $.each(obj, function(index, arr) {
      if (obj[index].hasOwnProperty('parent')) {
        settingObj.parent = obj[index].parent;
      }
      settingObj.title = obj[index].title;
      delete obj[index];
      localStorage.setItem(_cookieName, JSON.stringify(obj));
      return false;
    });

    var toxonomy_link_obj = $.parseJSON(localStorage.getItem('toxonomy_link_date'));
    var node_link_obj = $.parseJSON(localStorage.getItem('node_link_date'));

    $.each(toxonomy_link_obj, function(index, arr) {
      if (toxonomy_link_obj[index].taxonomy == settingObj.title) {
        settingObj.url = toxonomy_link_obj[index].url;
        delete toxonomy_link_obj[index];
      }
    });

    $.each(node_link_obj, function(index, arr) {
      if (node_link_obj[index].node == settingObj.title) {
        settingObj.nid = node_link_obj[index].url;
        delete node_link_obj[index];
      }
    });


    return settingObj;
  }

  hasStorage('menu_date', MENU_DATE);
  hasStorage('toxonomy_link_date', TAXONOMY_INIT_DATE);
  hasStorage('node_link_date', NODE_INIT_DATE);

  if ($('#taxonomy .menu-item__link').length > 0) {
    $('#taxonomy .menu-item__link').each(function(index) {
      TAXONOMY_INIT_DATE[index] = {
        'taxonomy': $(this).text(),
        'url': /[0-9]*$/.exec($(this).attr('href'))[0]
      };
    });
    localStorage.setItem('toxonomy_link_date', JSON.stringify(TAXONOMY_INIT_DATE));
  }

  if ($('.view-id-manage_page').length > 0) {
    $('.footable tbody tr').each(function(index) {
      NODE_INIT_DATE[index] = {
        'node': $(this).find('.views-field-title a').text(),
        'url': $(this).find('.views-field-nid').text().trim(),
      };
    });
    localStorage.setItem('node_link_date', JSON.stringify(NODE_INIT_DATE));
  }


  if ($('[data-drupal-link-system-path="manage/department/add"]').length > 0) {
    $('[data-drupal-link-system-path="manage/department/add"]')[0].click();
  }

  if ($('[data-drupal-link-system-path="admin/structure/menu/manage/main/add"]').length > 0) {
    $('[data-drupal-link-system-path="admin/structure/menu/manage/main/add"]')[0].click();
  }

  if ($('[data-drupal-link-system-path="manage/page/add"]').length > 0) {
    $('[data-drupal-link-system-path="manage/page/add"]')[0].click();
  }

  //栏目
  if ($('.taxonomy-term-department-form #edit-name-0-value').length > 0 && hasStorage('taxonomy_date', TAXONOMY_DATE)) {
    var settingObj = storageOper('taxonomy_date', $.parseJSON(localStorage.getItem('taxonomy_date')));

    $('#edit-name-0-value').val(settingObj.title);
    if (settingObj.hasOwnProperty('parent')) {
      $('#edit-parent option').each(function() {
        if ($(this).text().trim() == settingObj.parent.trim()) {
          $('#edit-parent option').attr('selected', false);
          $(this).attr('selected', true);
        }
      });
    }

    $('#edit-submit').trigger('click');
  }

  //基本页
  if ($('.node-page-form #edit-title-0-value').length > 0 && hasStorage('node_date', NODE_DATE)) {
    var NodesettingObj = storageOper('node_date', $.parseJSON(localStorage.getItem('node_date')));
    $('#edit-title-0-value').val(NodesettingObj.title);
    $('#edit-moderation-state-published').trigger('click');
  }
  //菜单
  if ($('#edit-title-0-value').length > 0 && $('#edit-link-0-uri').length > 0 && hasStorage('menu_date', MENU_DATE) && ((JSON.stringify(localStorage.getItem('toxonomy_link_date')) !== '{}') || (JSON.stringify(localStorage.getItem('node_link_date')) !== '{}'))) {
    var MenusettingObj = storageOper('menu_date', $.parseJSON(localStorage.getItem('menu_date')));

    $('#edit-link-0-uri').val('/');
    $('#edit-title-0-value').val(MenusettingObj.title);

    if (MenusettingObj.hasOwnProperty('parent')) {
      $('#edit-menu-parent option').each(function() {
        if ($(this).text().indexOf(MenusettingObj.parent) > 0) {
          $('#edit-parent option').attr('selected', false);
          $(this).attr('selected', true);
          $('#edit-menu-parent').trigger("chosen:updated");
        }
      });
    }

    if (MenusettingObj.hasOwnProperty('url')) {
      $('#edit-link-0-uri').val('/taxonomy/term/' + MenusettingObj.url);
    } else if (MenusettingObj.hasOwnProperty('nid')) {
      $('#edit-link-0-uri').val('/basic/' + MenusettingObj.nid);
    } else {
      $('#edit-link-0-uri').val('/');
    }

    $('#edit-submit').trigger('click');
  }

})(jQuery);