mourningdove/htdocs/js/jquery.importer.js
2026-05-24 01:03:05 +00:00

45 lines
No EOL
1.6 KiB
JavaScript

jQuery(function($) {
var dependencies = {
"lj_entries_remap_icon" : [ "lj_entries" ],
"lj_comments" : [ "lj_entries" ],
"lj_entries" : [ "lj_tags", "lj_friendgroups" ],
"lj_friends" : [ "lj_friendgroups" ]
};
var reverseDependencies = {};
$.each(dependencies, function(origElement, deps) {
$.each(deps,function(index,dependency) {
if ( reverseDependencies[dependency] === undefined )
reverseDependencies[dependency] = [];
reverseDependencies[dependency].push( origElement );
});
});
$.fn.toggleDependencies = function( dependencyMap, enable ) {
// first get all dependencies for this element and check / uncheck them
// then look for all dependencies of those dependencies
$(dependencyMap[this.attr("id")].map(function(value){ return "#"+value; }).join(","))
.prop( "checked", enable )
.trigger( enable ? "dw.importer.on" : "dw.importer.off" );
};
$.each(dependencies, function(elementId) {
// enable everything this item is dependent on
$("#"+elementId).click(function(e) {
$(this).filter(":checked").trigger( "dw.importer.on" );
}).bind( "dw.importer.on", function() {
$(this).toggleDependencies( dependencies, true );
});
});
$.each(reverseDependencies, function(elementId) {
// disable everything that's dependent upon this item
$("#"+elementId).click(function(e) {
$(this).filter(":not(:checked)").trigger( "dw.importer.off" );
}).bind( "dw.importer.off", function () {
$(this).toggleDependencies( reverseDependencies, false );
});
});
});