diff options
Diffstat (limited to 'public')
| -rw-r--r-- | public/javascripts/admin_interface.js | 46 | ||||
| -rw-r--r-- | public/javascripts/admin_search.js | 30 | ||||
| -rw-r--r-- | public/javascripts/related_assets.js | 9 | ||||
| -rw-r--r-- | public/stylesheets/admin.css | 34 |
4 files changed, 95 insertions, 24 deletions
diff --git a/public/javascripts/admin_interface.js b/public/javascripts/admin_interface.js index 9ce0b9e..3988016 100644 --- a/public/javascripts/admin_interface.js +++ b/public/javascripts/admin_interface.js | |||
| @@ -415,8 +415,10 @@ rrule_builder = { | |||
| 415 | }); | 415 | }); |
| 416 | $("#rrule_monthly_ordinal").bind("change", function() { | 416 | $("#rrule_monthly_ordinal").bind("change", function() { |
| 417 | $("#rrule_ordinal_fields").toggle($(this).is(":checked")); | 417 | $("#rrule_ordinal_fields").toggle($(this).is(":checked")); |
| 418 | rrule_builder.toggle_custom_ordinal_fields(); | ||
| 418 | rrule_builder.sync(); | 419 | rrule_builder.sync(); |
| 419 | }); | 420 | }); |
| 421 | $("#rrule_ordinal").bind("change", rrule_builder.toggle_custom_ordinal_fields); | ||
| 420 | $("#rrule_exclude_month").bind("change", function() { | 422 | $("#rrule_exclude_month").bind("change", function() { |
| 421 | $("#rrule_excluded_month").toggle($(this).is(":checked")); | 423 | $("#rrule_excluded_month").toggle($(this).is(":checked")); |
| 422 | rrule_builder.sync(); | 424 | rrule_builder.sync(); |
| @@ -433,6 +435,12 @@ rrule_builder = { | |||
| 433 | $("#rrule_monthly_options").show(); | 435 | $("#rrule_monthly_options").show(); |
| 434 | }, | 436 | }, |
| 435 | 437 | ||
| 438 | toggle_custom_ordinal_fields : function() { | ||
| 439 | $("#rrule_custom_ordinal_fields").toggle( | ||
| 440 | $("#rrule_monthly_ordinal").is(":checked") && $("#rrule_ordinal").val() === "custom" | ||
| 441 | ); | ||
| 442 | }, | ||
| 443 | |||
| 436 | sync : function() { | 444 | sync : function() { |
| 437 | var freq = $("input[name='rrule_freq']:checked").val(); | 445 | var freq = $("input[name='rrule_freq']:checked").val(); |
| 438 | var parts = []; | 446 | var parts = []; |
| @@ -448,7 +456,16 @@ rrule_builder = { | |||
| 448 | } else { | 456 | } else { |
| 449 | parts.push("FREQ=MONTHLY"); | 457 | parts.push("FREQ=MONTHLY"); |
| 450 | if ($("#rrule_monthly_ordinal").is(":checked")) { | 458 | if ($("#rrule_monthly_ordinal").is(":checked")) { |
| 451 | parts.push("BYDAY=" + $("#rrule_ordinal").val() + $("#rrule_ordinal_day").val()); | 459 | var ordinal = $("#rrule_ordinal").val(); |
| 460 | if (ordinal === "custom") { | ||
| 461 | var customDays = []; | ||
| 462 | $("input[id^='rrule_custom_ordinal_']:checked").each(function() { | ||
| 463 | customDays.push($(this).attr("id").replace("rrule_custom_ordinal_", "") + $("#rrule_ordinal_day").val()); | ||
| 464 | }); | ||
| 465 | if (customDays.length > 0) parts.push("BYDAY=" + customDays.join(",")); | ||
| 466 | } else { | ||
| 467 | parts.push("BYDAY=" + ordinal + $("#rrule_ordinal_day").val()); | ||
| 468 | } | ||
| 452 | } | 469 | } |
| 453 | } | 470 | } |
| 454 | 471 | ||
| @@ -483,8 +500,33 @@ rrule_builder = { | |||
| 483 | } else if (parts.FREQ === "MONTHLY") { | 500 | } else if (parts.FREQ === "MONTHLY") { |
| 484 | $("input[name='rrule_freq'][value='monthly']").prop("checked", true); | 501 | $("input[name='rrule_freq'][value='monthly']").prop("checked", true); |
| 485 | rrule_builder.show_monthly_options(); | 502 | rrule_builder.show_monthly_options(); |
| 503 | var ordinalDays = parts.BYDAY && parts.BYDAY.split(","); | ||
| 504 | var customOrdinalDay = null; | ||
| 505 | var customOrdinals = []; | ||
| 506 | var customOrdinalsValid = ordinalDays && ordinalDays.length > 0; | ||
| 507 | if (customOrdinalsValid) { | ||
| 508 | ordinalDays.forEach(function(value) { | ||
| 509 | var customMatch = value.match(/^([1-5])([A-Z]{2})$/); | ||
| 510 | if (!customMatch || (customOrdinalDay && customOrdinalDay !== customMatch[2])) { | ||
| 511 | customOrdinalsValid = false; | ||
| 512 | return; | ||
| 513 | } | ||
| 514 | customOrdinalDay = customMatch[2]; | ||
| 515 | customOrdinals.push(customMatch[1]); | ||
| 516 | }); | ||
| 517 | } | ||
| 518 | |||
| 486 | var match = parts.BYDAY && parts.BYDAY.match(/^(-?\d+)([A-Z]{2})$/); | 519 | var match = parts.BYDAY && parts.BYDAY.match(/^(-?\d+)([A-Z]{2})$/); |
| 487 | if (match) { | 520 | if (customOrdinalsValid && (customOrdinals.length > 1 || customOrdinals[0] === "5")) { |
| 521 | $("#rrule_monthly_ordinal").prop("checked", true); | ||
| 522 | $("#rrule_ordinal_fields").show(); | ||
| 523 | $("#rrule_ordinal").val("custom"); | ||
| 524 | $("#rrule_ordinal_day").val(customOrdinalDay); | ||
| 525 | customOrdinals.forEach(function(ordinal) { | ||
| 526 | $("#rrule_custom_ordinal_" + ordinal).prop("checked", true); | ||
| 527 | }); | ||
| 528 | rrule_builder.toggle_custom_ordinal_fields(); | ||
| 529 | } else if (match) { | ||
| 488 | $("#rrule_monthly_ordinal").prop("checked", true); | 530 | $("#rrule_monthly_ordinal").prop("checked", true); |
| 489 | $("#rrule_ordinal_fields").show(); | 531 | $("#rrule_ordinal_fields").show(); |
| 490 | $("#rrule_ordinal").val(match[1]); | 532 | $("#rrule_ordinal").val(match[1]); |
diff --git a/public/javascripts/admin_search.js b/public/javascripts/admin_search.js index 7604bb7..d135503 100644 --- a/public/javascripts/admin_search.js +++ b/public/javascripts/admin_search.js | |||
| @@ -72,24 +72,20 @@ function initSearchPicker(options) { | |||
| 72 | found = false; | 72 | found = false; |
| 73 | for (var i = 0; i < data.length; i++) { | 73 | for (var i = 0; i < data.length; i++) { |
| 74 | (function(node) { | 74 | (function(node) { |
| 75 | var link; | 75 | var anchor = $("<a>").attr("href", onSelect ? "#" : node.node_path); |
| 76 | anchor.append(document.createTextNode(node.title || "")); | ||
| 77 | anchor.append($("<span>", { "class": "result_path" }).text(node.unique_name || "")); | ||
| 78 | var link = $("<p>").append(anchor); | ||
| 79 | |||
| 76 | if (onSelect) { | 80 | if (onSelect) { |
| 77 | link = $( | 81 | anchor.bind("click", function() { |
| 78 | "<p><a href='#'>" + node.title + | ||
| 79 | "<span class='result_path'>" + node.unique_name + "</span></a></p>" | ||
| 80 | ); | ||
| 81 | link.find("a").bind("click", function() { | ||
| 82 | onSelect(node); | 82 | onSelect(node); |
| 83 | results.slideUp(); | 83 | results.slideUp(); |
| 84 | results.empty(); | 84 | results.empty(); |
| 85 | return false; | 85 | return false; |
| 86 | }); | 86 | }); |
| 87 | } else { | ||
| 88 | link = $( | ||
| 89 | "<p><a href='" + node.node_path + "'>" + node.title + | ||
| 90 | "<span class='result_path'>" + node.unique_name + "</span></a></p>" | ||
| 91 | ); | ||
| 92 | } | 87 | } |
| 88 | |||
| 93 | results.append(link); | 89 | results.append(link); |
| 94 | found = true; | 90 | found = true; |
| 95 | })(data[i]); | 91 | })(data[i]); |
| @@ -150,7 +146,9 @@ dashboard_search = { | |||
| 150 | results.append("<p class='search_group_label'>Tags</p>"); | 146 | results.append("<p class='search_group_label'>Tags</p>"); |
| 151 | var tag_row = $("<div class='search_tag_row'></div>"); | 147 | var tag_row = $("<div class='search_tag_row'></div>"); |
| 152 | data.tags.forEach(function(tag) { | 148 | data.tags.forEach(function(tag) { |
| 153 | tag_row.append("<a class='search_tag_pill' href='" + tag.tag_path + "'>" + tag.name + "</a>"); | 149 | tag_row.append( |
| 150 | $("<a>", { "class": "search_tag_pill" }).attr("href", tag.tag_path).text(tag.name || "") | ||
| 151 | ); | ||
| 154 | found = true; | 152 | found = true; |
| 155 | }); | 153 | }); |
| 156 | results.append(tag_row); | 154 | results.append(tag_row); |
| @@ -159,10 +157,10 @@ dashboard_search = { | |||
| 159 | if (data.nodes.length) { | 157 | if (data.nodes.length) { |
| 160 | results.append("<p class='search_group_label'>Pages</p>"); | 158 | results.append("<p class='search_group_label'>Pages</p>"); |
| 161 | data.nodes.forEach(function(node) { | 159 | data.nodes.forEach(function(node) { |
| 162 | results.append( | 160 | var anchor = $("<a>").attr("href", node.node_path); |
| 163 | "<p><a href='" + node.node_path + "'>" + node.title + | 161 | anchor.append(document.createTextNode(node.title || "")); |
| 164 | "<span class='result_path'>" + node.unique_name + "</span></a></p>" | 162 | anchor.append($("<span>", { "class": "result_path" }).text(node.unique_name || "")); |
| 165 | ); | 163 | results.append($("<p>").append(anchor)); |
| 166 | found = true; | 164 | found = true; |
| 167 | }); | 165 | }); |
| 168 | } | 166 | } |
diff --git a/public/javascripts/related_assets.js b/public/javascripts/related_assets.js index 803332f..3340fa7 100644 --- a/public/javascripts/related_assets.js +++ b/public/javascripts/related_assets.js | |||
| @@ -15,12 +15,9 @@ related_assets = { | |||
| 15 | renderResults: function(data, results) { | 15 | renderResults: function(data, results) { |
| 16 | var found = false; | 16 | var found = false; |
| 17 | data.forEach(function(asset) { | 17 | data.forEach(function(asset) { |
| 18 | var item = $( | 18 | var item = $("<a>", { href: "#", "class": "related_asset_result" }); |
| 19 | "<a href='#' class='related_asset_result'>" + | 19 | item.append($("<img>", { src: asset.thumb_url, alt: "" })); |
| 20 | "<img src='" + asset.thumb_url + "' alt=''>" + | 20 | item.append($("<span>").text(asset.name || "")); |
| 21 | "<span>" + asset.name + "</span>" + | ||
| 22 | "</a>" | ||
| 23 | ); | ||
| 24 | item.bind("click", function() { | 21 | item.bind("click", function() { |
| 25 | related_assets.attach(asset.id, createUrl, list); | 22 | related_assets.attach(asset.id, createUrl, list); |
| 26 | return false; | 23 | return false; |
diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css index 5f0b165..c1273c6 100644 --- a/public/stylesheets/admin.css +++ b/public/stylesheets/admin.css | |||
| @@ -1494,3 +1494,37 @@ div#image_browser ul li { | |||
| 1494 | gap: 8px; | 1494 | gap: 8px; |
| 1495 | flex-wrap: wrap; | 1495 | flex-wrap: wrap; |
| 1496 | } | 1496 | } |
| 1497 | |||
| 1498 | /* ============================================================ | ||
| 1499 | Action log | ||
| 1500 | ============================================================ */ | ||
| 1501 | |||
| 1502 | #node_action_list td.node_action_time { | ||
| 1503 | white-space: nowrap; | ||
| 1504 | vertical-align: top; | ||
| 1505 | font-family: monospace; | ||
| 1506 | font-size: 0.8em; | ||
| 1507 | color: #777; | ||
| 1508 | padding-right: 1em; | ||
| 1509 | } | ||
| 1510 | |||
| 1511 | #node_action_list td.node_action_body { | ||
| 1512 | vertical-align: top; | ||
| 1513 | } | ||
| 1514 | |||
| 1515 | .node_action_inferred { | ||
| 1516 | opacity: 0.5; | ||
| 1517 | font-size: smaller; | ||
| 1518 | margin-left: 0.5em; | ||
| 1519 | } | ||
| 1520 | |||
| 1521 | .node_action_zoom { | ||
| 1522 | font-size: smaller; | ||
| 1523 | margin-left: 0.5em; | ||
| 1524 | } | ||
| 1525 | |||
| 1526 | .node_action_details summary { | ||
| 1527 | cursor: pointer; | ||
| 1528 | font-size: smaller; | ||
| 1529 | color: #777; | ||
| 1530 | } | ||
