您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Options
- // ==UserScript==
- // @name Solr Admin Helper
- // @author Hang Yuan
- // @namespace hyuan.solr
- // @description Options
- // @include //cdnjs.cloudflare.com/ajax/libs/require.js/2.1.14/require.min.js
- // @version 1.1.9
- // @match */solr/*
- // @grant none
- // ==/UserScript==
- require.config({
- packages: [
- { name: 'jquery', location: '//code.jquery.com/jquery-2.1.1.min', main: 'jquery-2.1.1.min' }
- , { name: 'jqueryui', location: '//code.jquery.com/ui/1.11.0', main: 'jquery-ui' }
- , { name: 'css', location: '//cdnjs.cloudflare.com/ajax/libs/require-css/0.1.1', main: 'css' }
- , { name: 'domReady', location: '//cdnjs.cloudflare.com/ajax/libs/require-domReady/2.0.1', main: 'domReady.min' }
- ]
- , shim: {
- 'jquery': { exports: 'jquery' }
- , 'jqueryui': { exports: 'jqueryui', deps: ['jquery', 'css!jqueryui/themes/smoothness/jquery-ui'] }
- }
- , map: {
- '*': {
- 'css': 'css' // or whatever the path to require-css is
- }
- }
- });
- require(['jquery', 'jqueryui', 'css!jqueryui/themes/smoothness/jquery-ui', 'domReady'],
- function($) {
- $(document).ready(function() {
- console.log('initializing ...');
- function addCss(cssString) {
- var head = document.getElementsByTagName('head')[0];
- //text-alignreturn unless head;
- var newCss = document.createElement('style');
- newCss.type = "text/css";
- newCss.innerHTML = cssString;
- head.appendChild(newCss);
- }
- function getSelection() {
- if (window.getSelection) {
- return window.getSelection().toString();
- } else if (document.selection && document.selection.type != "Control") {
- return document.selection.createRange().text;
- }
- }
- var ID_REGEXP = /<str name="id">(.*?)<\/str>/gi;
- function extractId(val) {
- var match = ID_REGEXP.exec($.trim(val));
- ID_REGEXP.lastIndex = 0; // XXX need to reset the lastIndex to make the RegExp object reusable
- return (match && match[1] || '').replace(/([\/:])/g, '\\$1');
- }
- function getRecordIds(q) {
- var command = {
- 'q': q
- ,'fl': 'id'
- };
- return $.ajax({
- url: location.protocol + '//' + location.host + '/solr/feedback/select/?wt=json&' + $.param(command)
- , type : 'GET'
- , contentType : 'application/json'
- , dataType : 'json'
- });
- }
- function deleteRecord(id) {
- var command = {
- "delete": { "id": id }
- };
- return $.ajax({
- url: location.protocol + '//' + location.host + '/solr/feedback/update/?commit=true'
- , type : 'POST'
- , contentType : 'application/json'
- , dataType : 'json'
- , data: JSON.stringify(command)
- });
- }
- function modifyRecord(id, field, value) {
- var record = {};
- record.id = id;
- if (value == 'NULL') {
- record[field] = { "set": null };
- } else {
- record[field] = { "set": value };
- }
- return $.ajax({
- url: location.protocol + '//' + location.host + '/solr/feedback/update/?commit=true'
- , type : 'POST'
- , contentType : 'application/json'
- , dataType : 'json'
- , data: JSON.stringify([record])
- });
- }
- function setUpModifyButton() {
- var $modifyRecordDialog = $('<div title="Modify Record">'
- + '<form><fieldset>'
- + '<label for="solrRecordModifier_id">ID</label>'
- + '<input type="text" name="solrRecordModifier_id" id="solrRecordModifier_id" value="" class="text ui-widget-content ui-corner-all" size="70">'
- + '<label for="solrRecordModifier_field">Field</label>'
- + '<input type="text" name="solrRecordModifier_field" id="solrRecordModifier_field" value="" class="text ui-widget-content ui-corner-all" size="70">'
- + '<label for="solrRecordModifier_value">New Value</label>'
- + '<input type="text" name="solrRecordModifier_value" id="solrRecordModifier_value" value="" class="text ui-widget-content ui-corner-all" size="70">'
- + '<input type="submit" tabindex="-1" style="position:absolute; top:-1000px">'
- + '</fieldset></from>'
- + '</div>');
- $modifyRecordDialog.dialog({
- autoOpen: false,
- resizable: true,
- width:530,
- modal: true,
- buttons: {
- "Submit": function() {
- var dialog = this;
- modifyRecord($idInput.val(), $fieldInput.val(), $valueInput.val())
- .done(function() {
- $( dialog ).dialog( "close" );
- })
- .fail(function(jqXHR, textStatus) {
- alert('Failed to modify the specified record. \n\n' + jqXHR.responseText);
- });
- },
- Cancel: function() {
- $( this ).dialog( "close" );
- }
- }
- })
- var $idInput = $modifyRecordDialog.find('#solrRecordModifier_id');
- var $fieldInput = $modifyRecordDialog.find('#solrRecordModifier_field');
- var $valueInput = $modifyRecordDialog.find('#solrRecordModifier_value');
- var modifyBtn = $('<button id="solrRecordModifier">Modify</button>');
- modifyBtn.insertAfter($('#form button:last'));
- modifyBtn.click(function(event) {
- event.preventDefault();
- $idInput.val(extractId(getSelection()));
- $modifyRecordDialog.dialog('open');
- });
- }
- function setUpDeleteButton() {
- var $deleteRecordDialog = $('<div title="Delete Record">'
- + '<p>Are sure to delete the record</p>'
- + '<div class="form"><form><fieldset><div class="fieldset">'
- + '<label for="solrRecordDeleter_id">ID</label>'
- + '<input type="text" name="solrRecordDeleter_id" id="solrRecordDeleter_id" value="" class="text ui-widget-content ui-corner-all" size="70">'
- + '</div></fieldset></from></div>'
- + '</div>');
- $deleteRecordDialog.dialog({
- autoOpen: false,
- resizable: true,
- width:530,
- modal: true,
- buttons: {
- "Delete": function() {
- var dialog = this;
- if ($idInput.val()) {
- deleteRecord($idInput.val())
- .done(function() {
- $( dialog ).dialog( "close" );
- })
- .fail(function(jqXHR, textStatus) {
- alert('Failed to delete the specified record. \n\n' + jqXHR.responseText);
- });
- }
- },
- Cancel: function(jqXHR, textStatus, errorThrown ) {
- $( this ).dialog( "close" );
- }
- }
- });
- var $idInput = $deleteRecordDialog.find('#solrRecordDeleter_id');
- var deleteBtn = $('<button id="solrRecordDeleter">Delete</button>');
- deleteBtn.insertAfter($('#form button:last'));
- deleteBtn.click(function(event) {
- event.preventDefault();
- $idInput.val(extractId(getSelection()));
- $deleteRecordDialog.dialog('open');
- });
- }
- $(document).one('click', function() {
- addCss (
- '.ui-dialog-content fieldset { border: 0; text-align: left ! important; }'
- + '.ui-dialog-content label, .ui-dialog-content input { display: block; }'
- + '.ui-dialog-content input.text { margin-bottom: 12px; padding: 0.4em; width: 95%; }'
- );
- setUpModifyButton();
- setUpDeleteButton();
- });
- });
- });