SGW Item Modification Helper

Improves the modification page

目前為 2017-12-28 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name        SGW Item Modification Helper
// @namespace   greasyfork.org
// @version     1.3.2
// @grant       none
// @require     https://greasyfork.org/scripts/23449-gm-api-script/code/GM%20API%20script.js?upDate=2016_09_23
// @include     https://sellers.shopgoodwill.com/sellers/modifyItem.asp*
// @description Improves the modification page
// ==/UserScript==

$('*[name]').not('[id]').each(function(){
  $(this).attr('id', $(this).attr('name'));
});



$('#itemTitle').parent().parent().parent().hide();
$('#itemTitle').parent().parent().parent().before("<tr><td valign='top' width='10' bgcolor='#2045A3'><img src='../images/spacer.gif' height=' 0' width='10'></td><td id='contentTD'></td></tr>");

$('#contentTD').append("<p id='itemTitleContainer'><b>Item Title:</b> </p>");
$('#itemTitleContainer').append($('#itemTitle'));

$('#contentTD').append("<p id='itemCategoryContainer'><b>Category:</b> </p>");
$('#itemCategoryContainer').append($('#s1'));

$('#contentTD').append("<p id='itemDescriptionContainer'><b>Description:</b> </p>");
$('#itemDescriptionContainer').append($('#colourPalette').parent());

// TODO: Shipping calculator?
$('#contentTD').append("<div id='itemShippingDetailsContainer'></div>");
$('#itemShippingDetailsContainer').append("<p id='itemShippingWeightContainer'><b>Shipping Weight:</b> </p>");
$('#itemShippingWeightContainer').append($('#itemWeight'));
$('#itemShippingDetailsContainer').append("<p id='itemDisplayWeightContainer'><b>Display (Actual) Weight:</b> </p>");
$('#itemDisplayWeightContainer').append($('#itemDisplayWeight'));
$('#itemShippingDetailsContainer').append("<p id='itemShippingPriceContainer'><b>Shipping Charge:</b><br></p>");
$('#itemShippingPriceContainer').append($('#itemShippingPrice'));
$('#itemShippingDetailsContainer').append("<p id='itemShipMethodContainer'><b>Shipping Method:</b> <br></p>");
$('#itemShipMethodContainer').append($('#itemShipMethod'));
$('#itemShippingDetailsContainer').append("<p id='itemNoCombineShippingContainer'><b>Item Shipment Combining:</b><br></p>");
$('#itemNoCombineShippingContainer').append($('#itemNoCombineShipping'));
$('#itemNoCombineShippingContainer').append(" Select this option if the buyer of this item should not be allowed to combine this item with shipment of other items.");
$('#itemShippingDetailsContainer').append("<p id='itemAutoInsuranceContainer'><b>Auto Include Insurance (USPS Only):</b></p>");
$('#itemAutoInsuranceContainer').append($('#itemAutoInsurance'));

$('#contentTD').append("<p id='itemsellerstoreContainer'><b>Seller Store:</b> </p>");
$('#itemsellerstoreContainer').append($('#itemsellerstore'));

$('#itemSellerInventoryLocationID').parent().attr('id', 'itemSellerInventoryLocationIDContainer').appendTo($('#contentTD'));

$('#contentTD').append("<p id='itemSellerInfoContainer'><b>Seller Private Description:</b><br></p>");
$('#itemSellerInfoContainer').append($('#itemSellerInfo'));

$('#contentTD').append("<p style='position:relative; left: 10px; padding-bottom:4px;'><span class='fakeButton' onclick='$(\"#hiddenJunk\").toggle();'>Show/hide hidden fields/etc.</span></p>");


$('#contentTD').parent().after("<tr style='display:none;' id='hiddenJunk'><td valign='top' width='10' bgcolor='#2045A3'><img src='../images/spacer.gif' height=' 0' width='10'></td><td id='hiddenJunkTD'></td></tr>");

$('#hiddenJunkTD').append("<p id='itemQuantityContainer'><b>Item Quantity: </b></p>");
$('#itemQuantityContainer').append($('#itemQuantity').parent());

$('#hiddenJunkTD').append("<p id='itemMinimumBidContainer'><b>Minimum Bid: </b></p>");
$('#itemMinimumBidContainer').append($('#itemMinimumBid').parent());

$('#hiddenJunkTD').append("<p id='itemBidIncrementContainer'><b>Bid Increment: </b></p>");
$('#itemBidIncrementContainer').append($('#itemBidIncrement').parent());

$('#hiddenJunkTD').append("<p id='itemReserveContainer'><b>Reserve Price: </b></p>");
$('#itemReserveContainer').append($('#itemReserve').parent());
$('#itemReserve').parent().children().first().remove();

$('#hiddenJunkTD').append("<p id='itemBuyNowPriceContainer'><b>Buy Now Price: </b></p>");
$('#itemBuyNowPriceContainer').append($('#itemBuyNowPrice').parent());
$('#itemBuyNowPrice').parent().children().first().remove();

$('#hiddenJunkTD').append("<p id='itemActualDimensionsContainer'></p>");
$('#itemActualDimensionsContainer').append($('#itemLength').parent().parent().parent());

$('#hiddenJunkTD').append("<p id='itemShippingDimensionsContainer'></p>");
$('#itemShippingDimensionsContainer').append('<font face="Arial" size="2"><strong>Shipping Dimension - Length x Width x Height in inches (optional)</font><font face="arial" color="#a3223a" size="4"></font>:</strong>');
$('#itemShippingDimensionsContainer').append($('#itemShipLength'));
$('#itemShippingDimensionsContainer').append(" <font face='Arial' size='2'>(Numbers and decimal point '.' only) Used for shipping optimization and prevention of oversized charges.</font>");

$('#hiddenJunkTD').append("<p id='itemShippingContainer'><b>Shipping: </b><p>");
$('#itemShippingContainer').append($('#itemShipping'));
$('#itemShippingContainer').append($('select[name="itemShipping"]'));

$('#hiddenJunkTD').append("<p id='itemHandlingPriceContainer'><b>Handling Charge: </b></p>");

$('#itemHandlingPriceContainer').append($('#itemHandlingPrice').parent());
$('#itemHandlingPrice').parent().children().first().remove();

$('#hiddenJunk').after("<tr><td valign='top' width='10' bgcolor='#2045A3' height='10px'><img src='../images/spacer.gif' height=' 0' width='10'></td><td id='hiddenJunkTD'></td></tr>");

$('#itemShipMethod option[value="3"]').text('Post Office');


$('#itemTitleContainer').after('<div id="counterContainer"><font face="Arial" size="4">You have <b><span id="myCounter"></span></b> characters remaining.</font></div>');
$("#myCounter").html(50-$('#itemTitle').val().length);
$('#itemTitle').bind('keyup', function(){
  $("#myCounter").html(50-$('#itemTitle').val().length);
});

// --------- Shipping calculator --------------------------------------------

if ($('#shipCalcContainer').length > 0) {
  // Doesn't do these things if the user doesn't have the new shipping calculator script installed.

//  $("#itemSellerInfo").after("<b>Note to shipping:</b><br><textarea id='noteToShipping' rows='2' cols='40'></textarea><br>");
//  $('#itemSellerInfo').hide();
  
  $("b:contains('Shipping Charge')").before($('.shippingOptions').first());
  $('.shippingOptions').eq(1).remove();
  // I have NO IDEA why the shippingOptions div gets duplicated, rather than just moved!
  
  $('#itemDescriptionContainer').after($('#shipCalcContainer').css({'margin-top' : '15px', 'margin-bottom' : '20px'}));

  var sgwTimeouts = window.setTimeout(function(){
      

  //    $('#myCounter').bind('change', function(){
  //        var len49 = Math.ceil($('#myCounter').html());
  //        $('#myCounter2').html(len49 + 1);
  //    })

      function dummyWeight() {
          if ($('#itemWeight').val().length < 1) {
             $('#itemWeight').val(1);
          }
          if ($('#itemDisplayWeight').val().length < 1) {
              $('#itemDisplayWeight').val(1);
          }
      }
// disabling this due to conflicts
/*      
      $('#submit1').bind('click', function(e){
          e.preventDefault();
          var submitForm = true;
          while ($('#itemTitle').val().length < 1) {
              $('#itemTitle').val(prompt('Item title?'));
          }
          if ($('#itemWeight').val().length < 1) {
              if ($('#currentShipCalcType').val() == 'USPS') {
                  while ($('#itemWeight').val().length < 1) {
                      var weight = prompt("Item's weight?");
                      $('#itemWeight').val(weight);
                      $('#itemDisplayWeight').val(weight);
                  }
              } else if ($('#currentShipCalcType').val() == 'pickup') {
                  $('#itemWeight').val(150);
              } else {
                  alert('Please enter shipping information!');
                  $('.calcInput:empty').first().focus();
                  submitForm = false;
              }
          }
          while ($('#itemDisplayWeight').val().length < 1) {
              $('#itemDisplayWeight').val(prompt('Item\'s actual weight?'));
          }
          if ($('#itemDescription').val().length < 1) {
  //            alert('Please enter a description!');
  //            submitForm = false;
  // Doesn't work. Huh.
          }
          if (submitForm === true) {
              if ($('#itemsellerstore').val() == '999') {
                  $('#itemsellerstore').val('999 - Mixed Locations');
              }
              var shipString = '<<';
              if ($('#Clothing').css('background-color') == 'rgb(170, 170, 170)') {
                  shipString += 'clth:'+$('#actualWeight').val()+'#';
                  if ($('#itemShipMethod').val() == 2) {
                      shipString += '/' + $('#dim1').val() + 'x' + $('#dim2').val() + 'x' + $('#dim3').val();
                  }
              } else if ($('#Media').css('background-color') == 'rgb(170, 170, 170)') {
                  shipString += 'mdia+'+$('#actualWeight').val()+'#';
              } else {
                  if ($('#currentShipCalcType').val() == 'general') {
                      shipString += 'gen:';
                  } else if ($('#currentShipCalcType').val() == 'guitar') {
                      shipString += 'guit:';
                  } else if ($('#currentShipCalcType').val() == 'art') {
                      shipString += 'art:';
                  } else if ($('#currentShipCalcType').val() == 'long') {
                      shipString += 'long:';
                  }
                  if ($('#dim1').val().length > 0 && $('#dim2').val().length > 0 && $('#dim3').val().length > 0) {
                    shipString += $('#actualWeight').val() + '#/' + $('#dim1').val() + 'x' + $('#dim2').val() + 'x' + $('#dim3').val();
                  }
              }
              shipString += '>>';
              console.log(shipString);
              $('#itemSellerInfo').val($('#itemSellerInfo').val()+shipString);
              if ($('#noteToShipping').val().length > 0) {
                  $('#itemSellerInfo').val($('#itemSellerInfo').val()+'<br><br><b>Note from ' + $('#posterName').html() + ': </b>' + $('#noteToShipping').val());
              }
              $('#form1').submit();
          }
      });
*/
      function validateCombineCat(cat) {
          noCombine = ['Sculpture', 'Figurine', 'Cookie Jar', 'Music Box', 'Glass', 'Grabbag', 'Barware', 'China', 'Cookware', 'Serving Piece', 'Wedding Dress', 'Gown',];
          combine = true;
  //        $.each()
  // I don't think I want it to automatically do this.
      }

      $('.upsButton').bind('click', function(){
          useSuggestion('UPS');
      });
      $('.uspsButton').bind('click', function(){
          useSuggestion('USPS');
      });
      $('.pickupOnlyButton').bind('click', function(){
          useSuggestion('pickup');
      });

      function buttonClickAnimate(button) {
          button.css('background-color', '#AAA').animate({
              'background-color' : '#EEE',
          }, 500);
      }

      function weightPrompt() {
          var displayWeight = Math.ceil($('#addPounds').html());
          while ($('#actualWeight').val().length < 1) {
             var actualWeight = prompt('Item\'s actual weight?');
             actualWeight = actualWeight.replace(/[^\d.-]/g,'');
             $('#actualWeight').val(actualWeight);
            displayWeight += Math.ceil(actualWeight);
             $('#calc-'+$('#currentShipCalcType').val()).trigger("click");
          }

          $('#itemDisplayWeight').val(displayWeight);
      }

      $('#calc-media').bind('click', function(){
          buttonClickAnimate($(this));
          $('#Media') .trigger('click');
      });

      $('#calc-clothing').bind('click', function(){
          buttonClickAnimate($(this));
          weightPrompt();
          var weight = parseFloat($('#actualWeight').val());
          $('#itemDisplayWeight').val(weight);
          calculateUSPS(weight);
      });

      $('.shipCharge').bind('click', function(){
          $('.shipType').css('background-color', '#EEE');
          $(this).css('background-color', '#AAA');
          var thisBox = $(this).text();
          var boxData = $('#boxDefinitions').data()[thisBox];
          weightPrompt();
          if (thisBox == 'Media') {
              doMedia($('#actualWeight').val());

          } else if (thisBox == 'Clothing' || thisBox == 'Small&light') {
              $('#calc-clothing').trigger('click');
          } else if (boxData['method'] == 'USPS') {
              $('#itemDisplayWeight').val($('#actualWeight').val());
              $('#itemWeight').val($('#actualWeight').val());
              $('#itemShippingPrice').val(boxData['price']);
              $('#shipTypeNote').val(thisBox);
          } else if (boxData['method'] == 'UPS') {
              $('#itemDisplayWeight').val($('#actualWeight').val());
              realWeight = Math.ceil($('#actualWeight').val())+Math.ceil($('#addInches').html());
              if (realWeight > boxData['weight']) {
                  $('#itemWeight').val(realWeight);
              } else {
                 $('#itemWeight').val(boxData['weight']);
              }
              $('#shipTypeNote').val(boxData['note']);
          }
          if (boxData['method'].length > 0) {
  //            console.log('.shipCharge():'+boxData['method']);
              shippingMethod(boxData['method']);
          }
      });

      function useSuggestion(type)   {
          buttonClickAnimate($('.'+type+'Button:visible'));
          if (type == 'pickupOnly') {
              type = 'pickup';
          }
  //        console.log('useSuggestion():'+type);
          shippingMethod(type);
          weightPrompt();
          $('#itemDisplayWeight').val($('#actualWeight').val());
          if (type == 'UPS') {
              $('#itemWeight').val($('#shipCalcShippingWeight').html());
          } else if (type == 'USPS') {
              $('#itemWeight').val($('#actualWeight').val());
              $('#itemShippingPrice').val($('#uspsSuggPrice').html());
          } else if (type == 'pickup') {
              $('#itemWeight').val(150);
          }
      }

      $('#UPS').bind('click', function(){
         weightPrompt();
         dimList = [$('#dim1').val(), $('#dim2').val(), $('#dim3').val()];
         $.each(dimList, function(index, dim){
             index+=1;
             while (dim.length < 1) {
                 dim = prompt('Dimension ' + index);
                 $('#dim'+index).val(dim);
             }
         });
         $('#calc-'+$('#currentShipCalcType').val()).trigger('click'); 
         if($('.upsButton:visible').length > 0) {
            useSuggestion('UPS');
         } else {
            useSuggestion('pickup');
         }
      });

      $('#pickupOnly').bind('click', function(){
         weightPrompt();
         shippingMethod('pickup');
      });

      function shippingMethod(method)  {
   //       console.log('shippingMethod() '+method);
          $('#UPS, #pickup').css('background-color', '#EEE');
          $('#itemShipMethod > option').removeAttr('selected');
          if (method == 'UPS') {
             $('#itemShipMethod').val(2);
             $('#itemAutoInsurance').removeProp('checked');
             $('#itemShippingPrice').val(0);
             $('#UPS').css('background-color', '#AAA');
          } else if (method =='pickup') {
  //            console.log('a');
             $('#itemShipMethod').val(0);
             $('#itemAutoInsurance').removeProp('checked');
             $('#itemShippingPrice').val(0);
             $('#itemWeight').val(150);
             $('#pickupOnly').css('background-color', '#AAA');
          } else if (method == 'USPS') {
  //            console.log('???');
             $('#itemShipMethod').val(3);
             $('#itemAutoInsurance').prop('checked', true);
             $('#itemWeight').val(Math.ceil($('#actualWeight').val()) + Math.ceil($('#addPounds').html()));
          }
      }

      function getCharge(myWeight) {
          console.log('getCharge:'+myWeight);
          if (myWeight <= 3) {
              return '3.99';
          } else if (myWeight <= 6) {
              return '5.99';
          } else if (myWeight <= 10) {
              return '7.99';
          } else if (myWeight <= 13) {
              return '8.99';
          } else if (myWeight <= 15) {
              return '9.99';
          } else if (myWeight <= 19) {
              return '11.99';
          } else if (myWeight <= 25) {
              return '15.99';
          } else if (myWeight <= 27) {
              return '16.99';
          } else if (myWeight <= 29) {
              return '17.99';
          } else if (myWeight <= 31) {
              return '18.99';
          } else if (myWeight <= 33) {
              return '19.99';
          } else if (myWeight <= 35) {
              return '20.99';
          } else if (myWeight <= 37) {
              return '21.99';
          } else if (myWeight <= 39) {
              return '22.99';
          } else if (myWeight <= 41) {
              return '23.99';
          } else if (myWeight <= 43) {
              return '24.99';
          } else if (myWeight <= 45) {
              return '25.99';
          } else if (myWeight <= 47) {
              return '26.99';
          } else if (myWeight <= 49) {
              return '27.99';
          } else if (myWeight <= 51) {
              return '28.99';
          } else if (myWeight <= 53) {
              return '29.99';
          } else if (myWeight <= 55) {
              return '30.99';
          } else if (myWeight <= 57) {
              return '31.99';
          } else if (myWeight <= 59) {
              return '32.99';
          } else if (myWeight <= 61) {
              return '33.99';
          } else if (myWeight <= 63) {
              return '34.99';
          } else if (myWeight <= 65) {
              return '35.99';
          } else if (myWeight <= 67) {
              return '36.99';
          } else if (myWeight <= 68) {
              return '37.99';
          } else if (myWeight <= 69) {
              return '38.99';
          } else if (myWeight <= 70) {
              return '39.99';
          }
    }
      function doMedia(weight) {    
          console.log('media:'+weight);
          var myCharge;
          if (weight < 50) {
              myCharge = getCharge(weight);
          } else if (weight < 70) {
              myCharge = 2 * getCharge(weight/2);
          } else {
              if (weight <= 140) {
                  weight /= 2;
                  myCharge = 2.25 * getCharge(weight);
              } else if (weight <= 210) {
                  weight /= 3;
                  myCharge = 3.5 * getCharge(weight);
              }
              myCharge = (Math.ceil(myCharge) - .01)
          }

          $('#itemDisplayWeight').val(weight);
          $('#itemWeight').val(weight);
          $('#itemShippingPrice').val(myCharge);
          $('#shipTypeNote').val('Media');
          shippingMethod('USPS');
      }
  }, 1100);

}

$('.fakeButton').css({
  'border' : '1px solid #CCC',
  'background-color' : '#EEE',
  'padding' : '3px',
  'margin' : '3px',
});

// don't forget checkboxes! also #table does not have a val()...

// can I touch $('body.WebWizRTEtextarea')???