2023-05-30 20:24:18 +00:00
/ *
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
Copyright ( C ) 2021 Hash Borgir
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
This file is part of D2Modder
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
Redistribution and use in source and binary forms , with
or without modification , are permitted provided that the
following conditions are met :
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
* Redistributions of source code must retain the above
copyright notice , this list of conditions and the
following disclaimer .
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
* Redistributions in binary form must reproduce the above
copyright notice , this list of conditions and the
following disclaimer in the documentation and / or other
materials provided with the distribution .
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
* This software must not be used for commercial purposes
* without my consent . Any sales or commercial use are prohibited
* without my express knowledge and consent .
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY !
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES ,
INCLUDING , BUT NOT LIMITED TO , THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED . IN NO EVENT SHALL THE COPYRIGHT OWNER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT , INDIRECT , INCIDENTAL ,
SPECIAL , EXEMPLARY , OR CONSEQUENTIAL DAMAGES ( INCLUDING , BUT
NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES ;
LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN
CONTRACT , STRICT LIABILITY , OR TORT ( INCLUDING NEGLIGENCE
OR OTHERWISE ) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE .
2023-06-23 17:39:51 +00:00
2023-05-30 20:24:18 +00:00
* /
// highlight json dump for item debugger
function syntaxHighlight ( json ) {
json = json . replace ( /&/g , '&' ) . replace ( /</g , '<' ) . replace ( />/g , '>' ) ;
return json . replace ( /("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g , function ( match ) {
var cls = 'number' ;
if ( /^"/ . test ( match ) ) {
if ( /:$/ . test ( match ) ) {
cls = 'key' ;
} else {
cls = 'string' ;
}
} else if ( /true|false/ . test ( match ) ) {
cls = 'boolean' ;
} else if ( /null/ . test ( match ) ) {
cls = 'null' ;
}
return '<span class="' + cls + '">' + match + '</span>' ;
} ) ;
}
function search ( ) {
$ . get ( "/ajax/uniqueitems.php?cmd=search&search=" + searchbox . value , function ( data ) {
$ ( '.uniqueitems-select' ) . html ( data )
} ) ;
}
function capitalizeFirstLetter ( string ) {
return string . charAt ( 0 ) . toUpperCase ( ) + string . slice ( 1 ) ;
}
$ ( document ) . ready ( function ( ) {
2023-06-23 17:39:51 +00:00
// Check if a tab is stored in local storage
var lastTab = localStorage . getItem ( 'lastTab' ) ;
// If a tab is stored, activate it
if ( lastTab ) {
$ ( '.nav-link[data-toggle="tab"]' ) . removeClass ( 'active selected' ) ;
$ ( '.tab-pane' ) . removeClass ( 'show active' ) ;
$ ( lastTab ) . addClass ( 'active show' ) ;
$ ( lastTab + '-tab' ) . addClass ( 'active show' ) ;
}
// Store the selected tab in local storage when a tab is clicked
$ ( '.nav-link[data-toggle="tab"]' ) . on ( 'shown.bs.tab' , function ( e ) {
var targetTab = $ ( e . target ) . attr ( 'href' ) ;
localStorage . setItem ( 'lastTab' , targetTab ) ;
} ) ;
2023-05-30 20:24:18 +00:00
$ ( '.form-text' ) . hide ( ) ;
$ ( '.help' ) . click ( function ( ) {
// $('.form-text').slideToggle();
} ) ;
$ ( '.op1' ) . val ( this . checked ) ;
$ ( '.op1' ) . change ( function ( ) {
if ( this . checked ) {
$ ( 'option[disabled="disabled"]' ) . hide ( ) ;
} else {
$ ( 'option[disabled="disabled"]' ) . show ( ) ;
}
} ) ;
$ ( function ( ) {
$ ( '[data-toggle="tooltip"]' ) . tooltip ( )
} )
2023-05-31 00:43:17 +00:00
// armor/misc/weapons select dropdown change function
2023-05-30 20:24:18 +00:00
$ ( '.w-select' ) . change ( function ( ) {
$ ( '.a-select,.m-select' ) . each ( function ( i , v ) {
v . value = '' ;
v . required = '' ;
} ) ;
2023-05-31 00:43:17 +00:00
x = $ ( this ) . find ( 'option:selected' ) . text ( ) ;
$ ( "*[name='*type']" ) . val ( x ) ;
2023-06-02 05:42:12 +00:00
$ ( '.itemtype' ) . html ( "(" + x + ")" ) ;
2023-05-30 20:24:18 +00:00
} ) ;
$ ( '.a-select' ) . change ( function ( ) {
$ ( '.w-select,.m-select' ) . each ( function ( i , v ) {
v . value = '' ;
v . required = '' ;
} ) ;
2023-05-31 00:43:17 +00:00
x = $ ( this ) . find ( 'option:selected' ) . text ( ) ;
$ ( "*[name='*type']" ) . val ( x ) ;
2023-06-02 05:42:12 +00:00
$ ( '.itemtype' ) . html ( "(" + x + ")" ) ;
2023-05-30 20:24:18 +00:00
} ) ;
$ ( '.m-select' ) . change ( function ( ) {
$ ( '.w-select,.a-select' ) . each ( function ( i , v ) {
v . value = '' ;
v . required = '' ;
} ) ;
2023-05-31 00:43:17 +00:00
x = $ ( this ) . find ( 'option:selected' ) . text ( ) ;
$ ( "*[name='*type']" ) . val ( x ) ;
2023-06-02 05:42:12 +00:00
$ ( '.itemtype' ) . html ( "(" + x + ")" ) ;
2023-05-30 20:24:18 +00:00
} ) ;
$ ( ".btnconfig" ) . click ( function ( ) {
$ ( ".ctrl-config" ) . hide ( ) ;
$ ( "#loading" ) . show ( ) ;
} ) ;
$ ( '.help' ) . click ( function ( ) {
$ ( ".fa-help" ) . remove ( ) ;
$ ( this ) . next ( ) . fadeToggle ( ) . focus ( ) . css ( {
"position" : "absolute" ,
"z-index" : "1000" ,
"background" : "#eee" ,
"color" : "black !important" ,
"border" : "1px solid #aaa" ,
"width" : "300px" ,
} )
} ) ;
$ ( '.form-text' ) . click ( function ( ) {
$ ( this ) . fadeOut ( "slow" ) ;
} ) ;
$ ( 'input[name="invfile"]' ) . keyup ( function ( ) {
invImg = docpath + '/img/items/' + this . value + ".png" ;
$ ( ".item" ) . attr ( "src" , invImg ) ;
} ) ;
// every time we change a prop dropdown,send to server, grab string, update item display
$ ( 'select[name^="prop"]' ) . change ( function ( ) {
prop = capitalizeFirstLetter ( $ ( this ) . attr ( "name" ) ) ;
propNum = prop . substring ( 4 ) ;
par = $ ( this ) . next ( ) . val ( ) ;
min = $ ( this ) . next ( ) . next ( ) . val ( ) ;
max = $ ( this ) . next ( ) . next ( ) . next ( ) . val ( ) ;
val = escape ( this . value ) ;
$ . get ( ` /ajax/uniqueitems.php?cmd=getString&prop= ${ val } &par= ${ par } &min= ${ min } &max= ${ max } ` , function ( data ) {
console . log ( data ) ;
$ ( ` .item_stats ul . ${ prop } ` ) . html ( data ) ;
} ) ;
} ) ;
// Properties's par/min/max onchange function, updated item string stats
function createChangeHandler ( propNumber ) {
var prop = "Prop" + propNumber ;
return function ( ) {
var par = $ ( '.par' + propNumber ) . val ( ) || 0 ;
var min = $ ( '.min' + propNumber ) . val ( ) ;
var max = $ ( '.max' + propNumber ) . val ( ) ;
var val = escape ( $ ( "*[name='prop" + propNumber + "'" ) . val ( ) ) ;
$ . get ( ` /ajax/uniqueitems.php?cmd=getString&prop= ${ val } &par= ${ par } &min= ${ min } &max= ${ max } ` , function ( data ) {
console . log ( data ) ;
$ ( ` .item_stats ul . ${ prop } ` ) . html ( data ) ;
} ) ;
} ;
}
// Run the loop 12 times for 12 props, and handle the change event
for ( var i = 1 ; i <= 12 ; i ++ ) {
$ ( '.par' + i + ', .min' + i + ', .max' + i ) . change ( createChangeHandler ( i ) ) ;
}
// index, lvl, lvl req change functions
$ ( "input[name='index']" ) . keyup ( function ( ) {
$ ( ".itemindex" ) . html ( $ ( this ) . val ( ) ) ;
} ) ;
2023-05-30 20:49:13 +00:00
$ ( "input[name='code']" ) . keyup ( function ( ) {
$ ( ".itemcode" ) . html ( "Item Code: (" + $ ( this ) . val ( ) + ")" ) ;
} ) ;
2023-05-30 20:24:18 +00:00
$ ( 'input[name="lvl"]' ) . keyup ( function ( ) {
$ ( ".itemlvl" ) . html ( "Level: " + $ ( this ) . val ( ) ) ;
} ) ;
$ ( 'input[name="lvl req"]' ) . keyup ( function ( ) {
$ ( ".itemlvlreq" ) . html ( "Level Required: " + $ ( this ) . val ( ) ) ;
} ) ;
2023-05-31 00:43:17 +00:00
2023-05-30 20:24:18 +00:00
// cmd = getUniqueItem
$ ( '.uniqueitems-select' ) . change ( function ( ) {
$ ( ".item" ) . attr ( "src" , "/img/items/1.png" ) ;
$ ( ".item_debug_link" ) . attr ( 'href' , "/ajax/uniqueitems.php?cmd=getUniqueItem&index=" + this . value )
$ . get ( "/ajax/uniqueitems.php?cmd=getUniqueItem&index=" + this . value , function ( data ) {
debugData = ( JSON . stringify ( data , null , 4 ) ) ;
$ ( '.debug, .debug_preview' ) . html ( syntaxHighlight ( debugData ) ) ;
props = data . props ;
invImg = docpath + '/img/items/' + data . invfile + ".png" ;
$ ( ".item" ) . attr ( "src" , invImg ) ;
$ ( ".item" ) . onerror = function ( ) {
invImg = "/img/items/" + data . invfile + ".png" ;
this . src = invImg ;
} ;
type = data [ "*type" ] ;
lvlreq = data [ "lvl req" ] ;
base = data . baseItemInfo ;
$ ( '.item_stats ul .itemindex' ) . html ( data . index ) ;
$ ( '.item_stats ul .itemtype' ) . html ( ` ( ${ type } ) ` ) ;
$ ( '.item_stats ul .itemlvl' ) . html ( ` Level: ${ base . level } ` ) ;
$ ( '.item_stats ul .itemlvlreq' ) . html ( ` Level Required: ${ lvlreq } ` ) ;
$ ( '.item_stats ul .itemcode' ) . html ( ` Item Code: ( ${ base . code } ) ` ) ;
if ( base . reqstr ) {
$ ( '.item_stats ul .itemstreq' ) . html ( ` Required Strength: ${ base . reqstr } ` ) ;
}
if ( base . reqdex ) {
$ ( '.item_stats ul .itemdexreq' ) . html ( ` Required Dexterity: ${ base . reqdex } ` ) ;
}
if ( base [ 'gemsockets' ] ) {
$ ( '.item_stats ul .itemgemsockets' ) . html ( ` Max Sockets: ( ${ base . gemsockets } ) ` ) ;
}
// THIS LINE BREAKS hidden fields and set them to blank.
$ ( '.props-container select, .props-container input' ) . val ( '' ) ;
// clear some blue text, I forgot what
$ ( '.item_stats ul .blue' ) . each ( function ( i , v ) {
$ ( v ) . html ( "" ) ;
} ) ;
// add the rest of the prop li's here
$ . each ( props , function ( i , v ) {
if ( v . string ) {
$ ( ` .item_stats ul . ${ i } ` ) . html ( v . string [ 0 ] ) ;
}
} ) ;
$ . each ( data , function ( i , v ) {
$ ( '*[name="' + i + '"]' ) . val ( v ) ;
if ( i == 'code' ) {
$ ( 'select[name="code[]"]' ) . val ( v ) ;
$ ( 'select[name="code[]"]' ) . prop ( 'required' , '' ) ;
}
} ) ;
} ) ;
} ) ;
// Debug preview slide down box
$ ( ".btnDebug" ) . click ( function ( ) {
$ ( ".debug_preview" ) . slideToggle ( ) ;
} ) ;
// cmd = sortBy
$ ( 'input[name="sort"]' ) . change ( function ( ) {
$ . get ( "/ajax/uniqueitems.php?cmd=sortBy&sort=" + this . value , function ( data ) {
$ ( '.uniqueitems-select' ) . html ( data )
} ) ;
} ) ;
// cmd = viewOnly
$ ( 'input[name="view"]' ) . change ( function ( ) {
$ . get ( "/ajax/uniqueitems.php?cmd=viewOnly&view=" + this . value , function ( data ) {
$ ( '.uniqueitems-select' ) . html ( data )
} ) ;
} ) ;
searchbox = document . getElementById ( 'search' ) ;
searchbox . addEventListener ( 'input' , search ) ;
$ ( 'input[name="theme"]' ) . change ( function ( ) {
modname = $ ( 'input[name="modname"]' ) . val ( ) ;
$ . get ( "/res/css.php?theme=" + this . value + "&modname=" + modname , function ( data ) {
location . reload ( ) ;
} ) ;
} ) ;
//genDocUniqueItems
$ ( "#Unique .btnDocs" ) . click ( function ( ) {
window . open ( '/genDocs.php?cmd=genDocUniqueItems' , '_blank' ) ;
} ) ;
// Save button event
$ ( '.btn-save' ) . click ( function ( event ) {
event . preventDefault ( ) ; // Prevent default button click behavior
// Get form data
var formData = $ ( ".uniqueform" ) . serialize ( ) ;
// delete item index
$ . get ( '/ajax/uniqueitems.php?cmd=save&' + formData , function ( response ) {
// Handle the response from the server
console . log ( response ) ;
} ) ;
} ) ;
2023-06-02 05:42:12 +00:00
// Chars.php Character Editor AJAXIFY
// Prevent default form submit
$ ( 'form' ) . submit ( function ( event ) {
event . preventDefault ( ) ;
} ) ;
$ ( ".wpcheck" ) . change ( function ( ) {
// Toggle the value between 0 and 1
var value = $ ( this ) . is ( ":checked" ) ? 1 : 0 ;
// Get the name of the checkbox
var name = $ ( this ) . attr ( "name" ) ;
2023-06-03 02:43:18 +00:00
2023-06-02 05:42:12 +00:00
// Get the name of the difficulty
2023-06-03 02:43:18 +00:00
var diff = $ ( this ) . attr ( "diff" ) ;
2023-06-02 05:42:12 +00:00
2023-06-06 04:02:36 +00:00
var parentFormId = $ ( this ) . closest ( "form" ) . attr ( "id" ) ;
var parentFormClass = $ ( this ) . closest ( "form" ) . attr ( "class" ) ;
2023-06-12 07:07:57 +00:00
2023-06-06 04:02:36 +00:00
var filePath = $ ( ` # ${ parentFormId } input[name='filePath'] ` ) . val ( ) ;
2023-06-02 05:42:12 +00:00
// Construct the URL for the GET request
var url = "/saveCharacter.php?cmd=wp&name=" + name + "&value=" + value + "&filePath=" + filePath + "&diff=" + diff ;
// Send the GET request
$ . get ( url , function ( response ) {
// Handle the response if needed
console . log ( response ) ;
} ) ;
} ) ;
2023-06-02 10:42:29 +00:00
$ ( ".qcheck" ) . change ( function ( ) {
// Toggle the value between 0 and 1
var value = $ ( this ) . is ( ":checked" ) ? 1 : 0 ;
// Get the name of the checkbox
var name = $ ( this ) . attr ( "name" ) ;
2023-06-03 02:43:18 +00:00
2023-06-02 10:42:29 +00:00
// Get the name of the difficulty
2023-06-03 02:43:18 +00:00
var diff = $ ( this ) . attr ( "diff" ) ;
2023-06-02 10:42:29 +00:00
2023-06-06 04:02:36 +00:00
var parentFormId = $ ( this ) . closest ( "form" ) . attr ( "id" ) ;
var parentFormClass = $ ( this ) . closest ( "form" ) . attr ( "class" ) ;
2023-06-12 07:07:57 +00:00
2023-06-06 04:02:36 +00:00
var filePath = $ ( ` # ${ parentFormId } input[name='filePath'] ` ) . val ( ) ;
2023-06-02 10:42:29 +00:00
// Construct the URL for the GET request
var url = "/saveCharacter.php?cmd=q&name=" + name + "&value=" + value + "&filePath=" + filePath + "&diff=" + diff ;
2023-06-02 05:42:12 +00:00
2023-06-02 10:42:29 +00:00
// Send the GET request
$ . get ( url , function ( response ) {
// Handle the response if needed
console . log ( response ) ;
} ) ;
} ) ;
2023-06-04 05:38:00 +00:00
$ ( ".form-check-input" ) . click ( function ( ) {
var $checkbox = $ ( this ) ;
var currentValue = $checkbox . val ( ) ;
// Toggle the value between 1 and 0
var newValue = currentValue === '1' ? '0' : '1' ;
// Update the value of the checkbox
$checkbox . val ( newValue ) ;
} ) ;
2023-06-03 02:43:18 +00:00
// Get the value of the input named "filePath"
function constructURL ( cmd , name , value , filePath ) {
return "/saveCharacter.php?cmd=" + cmd + "&name=" + name + "&value=" + value + "&filePath=" + filePath ;
}
2023-06-12 08:23:35 +00:00
$ ( ".charform input[name='Difficulty'], .charform .skill, .CharacterName, .CharacterClass, .CharacterLevel, .stats input, .form-check-input, .statsdiv input,.setallskills" ) . change ( function ( ) {
2023-06-03 02:43:18 +00:00
var name = $ ( this ) . attr ( "name" ) ;
var newValue = $ ( this ) . val ( ) ;
2023-06-12 08:23:35 +00:00
var cmd = $ ( this ) . attr ( "cmd" ) || name ;
2023-06-03 02:43:18 +00:00
var parentFormId = $ ( this ) . closest ( "form" ) . attr ( "id" ) ;
var parentFormClass = $ ( this ) . closest ( "form" ) . attr ( "class" ) ;
2023-06-12 07:07:57 +00:00
2023-06-03 02:43:18 +00:00
var filePath = $ ( ` # ${ parentFormId } input[name='filePath'] ` ) . val ( ) ;
var url = constructURL ( cmd , name , newValue , filePath ) ;
console . log ( url ) ;
console . log ( newValue )
$ . get ( url , function ( response ) {
if ( cmd == 'CharacterName' ) {
location . reload ( ) ;
}
console . log ( response ) ;
} ) ;
} ) ;
2023-06-12 07:07:57 +00:00
$ ( '.q_all, .wp_all' ) . click ( function ( ) {
2023-06-12 08:23:35 +00:00
var parentForm = $ ( this ) . closest ( 'form' ) ;
var targetClass = $ ( this ) . hasClass ( 'q_all' ) ? '.qcheck' : '.wpcheck' ;
2023-06-12 07:07:57 +00:00
var isChecked = $ ( this ) . prop ( 'checked' ) ;
2023-06-12 08:23:35 +00:00
parentForm . find ( targetClass ) . prop ( 'checked' , isChecked ) ;
2023-06-12 07:07:57 +00:00
} ) ;
2023-06-12 08:23:35 +00:00
2023-06-12 08:34:34 +00:00
function updateAllCheckbox ( parentFormId , checkboxClass , allCheckboxClass ) {
var allChecked = $ ( ` # ${ parentFormId } ${ checkboxClass } :checked ` ) . length === $ ( ` # ${ parentFormId } ${ checkboxClass } ` ) . length ;
var checkedValue = allChecked ? 'checked' : '' ;
var val = allChecked ? 1 : 0 ;
$ ( ` # ${ parentFormId } ${ allCheckboxClass } ` ) . prop ( 'checked' , checkedValue ) . val ( val ) ;
}
2023-06-12 07:07:57 +00:00
$ ( '.wpcheck' ) . change ( function ( ) {
var parentFormId = $ ( this ) . closest ( "form" ) . attr ( "id" ) ;
2023-06-12 08:34:34 +00:00
updateAllCheckbox ( parentFormId , '.wpcheck' , '.wp_all' ) ;
2023-06-12 07:07:57 +00:00
} ) ;
2023-06-12 08:23:35 +00:00
$ ( '.qcheck' ) . change ( function ( ) {
var parentFormId = $ ( this ) . closest ( "form" ) . attr ( "id" ) ;
2023-06-12 08:34:34 +00:00
updateAllCheckbox ( parentFormId , '.qcheck' , '.q_all' ) ;
2023-06-12 08:23:35 +00:00
} ) ;
2023-06-12 08:34:34 +00:00
2023-06-12 08:23:35 +00:00
$ ( '.setallskills' ) . change ( function ( ) {
2023-06-12 07:07:57 +00:00
var value = $ ( this ) . val ( ) ;
var parentFormId = $ ( this ) . closest ( "form" ) . attr ( "id" ) ;
$ ( ` # ${ parentFormId } .skill ` ) . attr ( 'value' , value ) ;
} ) ;
// colorize the acts
var acts = [ 'Act 1' , 'Act 2' , 'Act 3' , 'Act 4' , 'Act 5' ] ;
2023-06-04 05:38:00 +00:00
for ( var i = 0 ; i < acts . length ; i ++ ) {
var act = acts [ i ] ;
var className = 'act' + ( i + 1 ) ;
// Find the checkbox with a label containing the act
$ ( 'input[type="checkbox"] + label:contains("' + act + '")' ) . each ( function ( ) {
// Add a class to the parent div
$ ( this ) . parent ( ) . addClass ( className ) ;
} ) ;
}
2023-06-03 02:43:18 +00:00
2023-06-23 17:39:51 +00:00
// Reload the page when the button is clicked
$ ( '#reload-gui-button' ) . on ( 'click' , function ( ) {
location . reload ( ) ;
} ) ;
// Reload Mod files
$ ( '#reload-button' ) . on ( 'click' , function ( ) {
2023-06-24 05:47:34 +00:00
// Create a dialog with OK/Cancel buttons
$ ( '<div>' ) . html (
"Warning: Reloading all TXT/TBL files!<br><br>" +
"This action will reload all the TXT/TBL files into the database, overwriting any existing data. It will not modify your TXT/TBL files or mod files.<br><br>" +
"Please note that while this step is generally safe, it's always recommended to back up your mod files before proceeding.<br><br>" +
"Are you absolutely sure you want to proceed with this operation?"
) . dialog ( {
title : "Confirmation" ,
modal : true ,
resizable : false ,
buttons : {
OK : function ( ) {
// OK button clicked
console . log ( "OK button clicked" ) ;
// Show loading spinner and disable the button
$ ( "#TabContent" ) . hide ( ) ;
showLoadingSpinner ( ) ;
$ ( '#reload-button' ) . prop ( 'disabled' , true ) ;
// Send the request to reload.php
$ . get ( '/reload.php' )
. done ( function ( response ) {
console . log ( 'Request successful' ) ;
console . log ( response ) ;
// Perform additional actions or handle the response here
hideLoadingSpinner ( ) ;
$ ( "#TabContent" ) . show ( ) ;
} )
. fail ( function ( jqXHR , textStatus , errorThrown ) {
console . log ( 'Request failed' ) ;
console . log ( jqXHR ) ;
console . log ( textStatus ) ;
console . log ( errorThrown ) ;
// Handle the error or show an error message
} )
. always ( function ( ) {
// Hide the loading overlay and enable the button
$ ( '#loading-overlay' ) . fadeOut ( ) ;
$ ( '#reload-button' ) . prop ( 'disabled' , false ) ;
} ) ;
$ ( this ) . dialog ( "close" ) ;
} ,
Cancel : function ( ) {
// Cancel button clicked
console . log ( "Cancel button clicked" ) ;
$ ( this ) . dialog ( "close" ) ;
}
}
} ) ;
} ) ;
// Reload Mod files
$ ( '.btn-delete' ) . on ( 'click' , function ( ) {
event . preventDefault ( ) ; // Prevent default button click behavior
// Create a dialog with OK/Cancel buttons
$ ( '<div>' ) . html (
"Warning: This will delete the item from the database and the TXT file on disk!<br><br>" +
"There is no UNDO for this. Make sure you want to delete this row before you proceed.<br><br>" +
"It's always recommended to back up your mod files before proceeding.<br><br>" +
"Are you absolutely sure you want to proceed with this operation?"
) . dialog ( {
title : "Confirmation" ,
modal : true ,
resizable : false ,
buttons : {
OK : function ( ) {
// OK button clicked
console . log ( "OK button clicked" ) ;
// Delete button event
// delete item index
$ . get ( '/ajax/uniqueitems.php?cmd=delete&index=' + $ ( ".uniqueform input[name='index']" ) . val ( ) , function ( response ) {
// Handle the response from the server
// remove option from list
$ ( '.uniqueitems-select option[value="' + $ ( ".uniqueform input[name='index']" ) . val ( ) + '"]' ) . remove ( ) ;
console . log ( response ) ;
} ) ;
$ ( this ) . dialog ( "close" ) ;
} ,
Cancel : function ( ) {
// Cancel button clicked
console . log ( "Cancel button clicked" ) ;
$ ( this ) . dialog ( "close" ) ;
}
}
} ) ;
2023-06-23 17:39:51 +00:00
} ) ;
2023-06-02 05:42:12 +00:00
} ) ; // end document.ready