mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Fixes #5962. Add any tags that are no longer selected but were initially on page load.
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
/* Helper functions
|
/* Helper functions
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
var createTermCheckbox = function ($wrapper, tag) {
|
var createTermCheckbox = function ($wrapper, tag, checked) {
|
||||||
var $ul = $("ul.terms", $wrapper);
|
var $ul = $("ul.terms", $wrapper);
|
||||||
var singleChoice = $(".terms-editor", $wrapper).data("singlechoice");
|
var singleChoice = $(".terms-editor", $wrapper).data("singlechoice");
|
||||||
var namePrefix = $wrapper.data("name-prefix");
|
var namePrefix = $wrapper.data("name-prefix");
|
||||||
@@ -12,8 +12,8 @@
|
|||||||
var checkboxId = idPrefix + "_Terms_" + nextIndex + "__IsChecked";
|
var checkboxId = idPrefix + "_Terms_" + nextIndex + "__IsChecked";
|
||||||
var checkboxName = namePrefix + ".Terms[" + nextIndex + "].IsChecked";
|
var checkboxName = namePrefix + ".Terms[" + nextIndex + "].IsChecked";
|
||||||
var radioName = namePrefix + ".SingleTermId";
|
var radioName = namePrefix + ".SingleTermId";
|
||||||
var checkboxHtml = "<input type=\"checkbox\" value=\"true\" checked=\"checked\" data-term=\"" + tag.label + "\" data-term-identity=\"" + tag.label.toLowerCase() + "\" id=\"" + checkboxId + "\" name=\"" + checkboxName + "\" />";
|
var checkboxHtml = "<input type=\"checkbox\" value=\"" + (checked ? "true\" checked=\"checked\"" : "false") + " data-term=\"" + tag.label + "\" data-term-identity=\"" + tag.label.toLowerCase() + "\" id=\"" + checkboxId + "\" name=\"" + checkboxName + "\" />";
|
||||||
var radioHtml = "<input type=\"radio\" value=\"" + id + "\" checked=\"checked\" data-term=\"" + tag.label + "\" data-term-identity=\"" + tag.label.toLowerCase() + "\" id=\"" + checkboxId + "\" name=\"" + radioName + "\" />";
|
var radioHtml = "<input type=\"radio\" value=\"" + id + (checked ? "\" checked=\"checked\"" : "\"") + " data-term=\"" + tag.label + "\" data-term-identity=\"" + tag.label.toLowerCase() + "\" id=\"" + checkboxId + "\" name=\"" + radioName + "\" />";
|
||||||
var inputHtml = singleChoice ? radioHtml : checkboxHtml;
|
var inputHtml = singleChoice ? radioHtml : checkboxHtml;
|
||||||
var $li = $("<li>" +
|
var $li = $("<li>" +
|
||||||
inputHtml +
|
inputHtml +
|
||||||
@@ -22,8 +22,8 @@
|
|||||||
"<label class=\"forcheckbox\" for=\"" + checkboxId + "\">" + tag.label + "</label>" +
|
"<label class=\"forcheckbox\" for=\"" + checkboxId + "\">" + tag.label + "</label>" +
|
||||||
"</li>").hide();
|
"</li>").hide();
|
||||||
|
|
||||||
if (singleChoice) {
|
if (checked && singleChoice) {
|
||||||
$("input[type='radio']", $ul).removeAttr("checked");
|
$("input[type='radio']", $ul).removeAttr("checked");
|
||||||
$("input[type='radio'][name$='IsChecked']", $ul).val("false");
|
$("input[type='radio'][name$='IsChecked']", $ul).val("false");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,6 +43,7 @@
|
|||||||
var $tagIt = $("ul.tagit", $wrapper);
|
var $tagIt = $("ul.tagit", $wrapper);
|
||||||
var singleChoice = $(".terms-editor", $wrapper).data("singlechoice");
|
var singleChoice = $(".terms-editor", $wrapper).data("singlechoice");
|
||||||
var $terms = $("ul.terms", $wrapper);
|
var $terms = $("ul.terms", $wrapper);
|
||||||
|
var initialTags = $(".terms-editor", $wrapper).data("selected-terms");
|
||||||
|
|
||||||
if (singleChoice && action == "added") {
|
if (singleChoice && action == "added") {
|
||||||
$tagIt.tagit("fill", tag);
|
$tagIt.tagit("fill", tag);
|
||||||
@@ -50,8 +51,16 @@
|
|||||||
|
|
||||||
$terms.empty();
|
$terms.empty();
|
||||||
|
|
||||||
$($tagIt.tagit("tags")).each(function (index, tag) {
|
var tags = $tagIt.tagit("tags");
|
||||||
createTermCheckbox($wrapper, tag, this);
|
$(tags).each(function (index, tag) {
|
||||||
|
createTermCheckbox($wrapper, tag, true);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add any tags that are no longer selected but were initially on page load.
|
||||||
|
// These are required to be posted back so they can be removed.
|
||||||
|
var removedTags = $.grep(initialTags, function (initialTag) { return $.grep(tags, function (tag) { return tag.value === initialTag.value }).length === 0 });
|
||||||
|
$(removedTags).each(function (index, tag) {
|
||||||
|
createTermCheckbox($wrapper, tag, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".no-terms", $wrapper).hide();
|
$(".no-terms", $wrapper).hide();
|
||||||
|
Reference in New Issue
Block a user