Editorial Calendar - Version 2.7

Version Description

The calendar is now available in Italian thanks to Lorenzo Boldorini who blogs at http://www.webqbe.it.

Changed all calls of the jQuery live method to use the new on method so the calendar will keep working when WordPress upgrades to jQuery 1.9.

The Mozilla team is now using the Editorial Calendar in one of their blogs and performed a security review of the calendar. They found a couple of potential issues which were fixed in this release. https://bugzilla.mozilla.org/show_bug.cgi?id=738112

The Editorial Calendar is now stripping all tags out of post titles created from the calendar. This fixes a potential security issue found by the Mozilla security testing team. https://bugzilla.mozilla.org/show_bug.cgi?id=738112

We are now preventing a potential SQL injection attack with the start date and end date filter when querying posts. This fixes a potential security issue found by the Mozilla security testing team. https://bugzilla.mozilla.org/show_bug.cgi?id=738112

We are adding an extra check to make sure that authors can't delete a post created by another author. This fixes a potential security issue found by the Mozilla security testing team. https://bugzilla.mozilla.org/show_bug.cgi?id=738112

Download this release

Release Info

Developer zgrossbart
Plugin Icon wp plugin Editorial Calendar
Version 2.7
Comparing to
See all releases

Code changes from version 2.6 to 2.7

edcal.css CHANGED
@@ -323,6 +323,13 @@ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockq
323
 
324
  .day.today .daylabel {
325
  color: white;
 
 
 
 
 
 
 
326
  }
327
 
328
  .today .daynewlink {
323
 
324
  .day.today .daylabel {
325
  color: white;
326
+ text-shadow:0 -1px 0 rgba(0,0,0,0.3);
327
+ background:#8cc1e9;
328
+ background-image:-webkit-gradient(linear,left bottom,left top,from(#72a7cf),to(#8cc1e9));
329
+ background-image:-webkit-linear-gradient(bottom,#72a7cf,#8cc1e9);
330
+ background-image:-moz-linear-gradient(bottom,#72a7cf,#8cc1e9);
331
+ background-image:-o-linear-gradient(bottom,#72a7cf,#8cc1e9);
332
+ background-image:linear-gradient(to top,#72a7cf,#8cc1e9);
333
  }
334
 
335
  .today .daynewlink {
edcal.js CHANGED
@@ -399,7 +399,7 @@ var edcal = {
399
  }
400
  jQuery(window).bind('resize', resizeWindow);*/
401
 
402
- jQuery('#newPostScheduleButton').live('click', function(evt) {
403
  // if the button is disabled, don't do anything
404
  if (jQuery(this).hasClass('disabled')) {
405
  return false;
@@ -431,7 +431,7 @@ var edcal = {
431
  edcal.updatePublishButton();
432
  });
433
 
434
- jQuery('#edcal_weeks_pref').live('keyup', function(evt) {
435
  if (jQuery('#edcal_weeks_pref').val().length > 0) {
436
  jQuery('#edcal_applyoptions').removeClass('disabled');
437
  } else {
399
  }
400
  jQuery(window).bind('resize', resizeWindow);*/
401
 
402
+ jQuery('#newPostScheduleButton').on('click', function(evt) {
403
  // if the button is disabled, don't do anything
404
  if (jQuery(this).hasClass('disabled')) {
405
  return false;
431
  edcal.updatePublishButton();
432
  });
433
 
434
+ jQuery('#edcal_weeks_pref').on('keyup', function(evt) {
435
  if (jQuery('#edcal_weeks_pref').val().length > 0) {
436
  jQuery('#edcal_applyoptions').removeClass('disabled');
437
  } else {
edcal.min.js CHANGED
@@ -3,8 +3,8 @@ var edcal={NO_DATE:"00000000",weeksPref:3,statusPref:!0,authorPref:!1,timePref:!
3
  jQuery.cookie("edcal_date");b?(b=Date.parseExact(b,"yyyy-dd-MM"),edcal.output("Resetting to date from the edcal_Date cookie: "+b)):b=Date.today();edcal.moveTo(b.clone());jQuery("#edcal_scrollable").bind("mousewheel",function(a,b){var e=b>0?false:true,f=Math.abs(b);edcal.output(e+" at a velocity of "+f);!edcal.isMoving&&f>0.2&&edcal.move(1,e);return false});a.onBeforeSeek(function(){return false});jQuery(document).bind("keydown",function(a){if(a.keyCode===27)return false;if(!jQuery("#edcal_quickedit").is(":visible")){if(a.keyCode===
4
  40&&!a.altKey&&!a.ctrlKey){edcal.move(1,true);return false}if(a.keyCode===38&&!a.altKey&&!a.ctrlKey){edcal.move(1,false);return false}if(a.keyCode===34&&!a.altKey&&!a.ctrlKey||a.keyCode===40&&a.ctrlKey){edcal.move(edcal.weeksPref,true);return false}if(a.keyCode===33&&!a.altKey&&!a.ctrlKey||a.keyCode===38&&a.ctrlKey){edcal.move(edcal.weeksPref,false);return false}}});edcal.getPosts(edcal.nextStartOfWeek(b).add(-3).weeks(),edcal.nextStartOfWeek(b).add(edcal.weeksPref+3).weeks());jQuery("#moveToToday").click(function(){edcal.moveTo(Date.today());
5
  edcal.getPosts(edcal.nextStartOfWeek(Date.today()).add(-3).weeks(),edcal.nextStartOfWeek(Date.today()).add(edcal.weeksPref+3).weeks());return false});jQuery("#moveToLast").click(function(){if(edcal.lastPostDate!=="-1"){var a=Date.parseExact(edcal.lastPostDate,"ddMMyyyy");edcal.moveTo(a);edcal.getPosts(edcal.nextStartOfWeek(a).add(-3).weeks(),edcal.nextStartOfWeek(a).add(edcal.weeksPref+3).weeks());return false}});jQuery("#prevmonth").click(function(){edcal.move(edcal.weeksPref,false);return false});
6
- jQuery("#nextmonth").click(function(){edcal.move(edcal.weeksPref,true);return false});jQuery("#newPostScheduleButton").live("click",function(){if(jQuery(this).hasClass("disabled"))return false;jQuery(this).addClass("disabled");return edcal.savePost(null,false,true)});jQuery("#edcal-title-new-field").bind("keyup",function(a){jQuery("#edcal-title-new-field").val().length>0&&(!jQuery("#edcal-time").is(":visible")||jQuery("#edcal-time").val().length>0)?jQuery("#newPostScheduleButton").removeClass("disabled"):
7
- jQuery("#newPostScheduleButton").addClass("disabled");if(a.keyCode===13)return edcal.savePost(null,true)});jQuery("#edcal-status").bind("change",function(){edcal.updatePublishButton()});jQuery("#edcal_weeks_pref").live("keyup",function(a){jQuery("#edcal_weeks_pref").val().length>0?jQuery("#edcal_applyoptions").removeClass("disabled"):jQuery("#edcal_applyoptions").addClass("disabled");a.keyCode===13&&edcal.saveOptions()});edcal.savePosition();edcal.addOptionsSection();jQuery("#edcal-time").timePicker({show24Hours:"H:i"===
8
  edcal.timeFormat,separator:":",step:30});jQuery("#showdraftsdrawer").click(function(){edcal.setDraftsDrawerVisible(!edcal.isDraftsDrawerVisible)})}},setDraftsDrawerVisible:function(a,b){var c=jQuery("#showdraftsdrawer");c.hasClass("isLoaded")?b&&b():(c.addClass("isLoaded"),edcal.setupDraftsdrawer(b));a?(jQuery("#cal_cont").css({"margin-right":"13.5%"}),jQuery("#draftsdrawer_cont").css({display:"block",width:"13%"}),c.html(edcal.str_hidedrafts)):(jQuery("#cal_cont").css({"margin-right":"0"}),jQuery("#draftsdrawer_cont").css({display:"none",
9
  width:"0"}),c.html(edcal.str_showdrafts));edcal.isDraftsDrawerVisible=a;jQuery.cookie("edcal_drafts_drawer",a,{expires:2060})},setupDraftsdrawer:function(a){jQuery("#draftsdrawer_loading").css({display:"block"});edcal.getPosts(edcal.NO_DATE,null,function(){edcal.initDraftsdrawer();a&&a()})},initDraftsdrawer:function(){var a;a=""+('<a href="#" adddate="'+edcal.NO_DATE+'" class="daynewlink" style="margin-top: 5px;"title="'+edcal.str_newdraft+'" id="unscheduledNewLink" onclick="edcal.addDraft(); return false;">'+
10
  edcal.str_addDraftLink+"</a>");a=a+'<ul class="postlist">'+edcal.getPostItems(edcal.NO_DATE);a+="</ul>";edcal.draggablePost("#row"+edcal._wDate.toString(edcal.internalDateFormat)+" li.post");edcal.makeDroppable(jQuery("#draftsdrawer div.day"));jQuery("#unscheduled").append(a);jQuery("#draftsdrawer_loading").css({display:"none"});a=jQuery("#cal_cont");jQuery("#unscheduled ul.postlist").css("min-height",a.height()-10-jQuery("#draftsdrawer .draftsdrawerheadcont").height()-jQuery("#unscheduledNewLink").outerHeight());
3
  jQuery.cookie("edcal_date");b?(b=Date.parseExact(b,"yyyy-dd-MM"),edcal.output("Resetting to date from the edcal_Date cookie: "+b)):b=Date.today();edcal.moveTo(b.clone());jQuery("#edcal_scrollable").bind("mousewheel",function(a,b){var e=b>0?false:true,f=Math.abs(b);edcal.output(e+" at a velocity of "+f);!edcal.isMoving&&f>0.2&&edcal.move(1,e);return false});a.onBeforeSeek(function(){return false});jQuery(document).bind("keydown",function(a){if(a.keyCode===27)return false;if(!jQuery("#edcal_quickedit").is(":visible")){if(a.keyCode===
4
  40&&!a.altKey&&!a.ctrlKey){edcal.move(1,true);return false}if(a.keyCode===38&&!a.altKey&&!a.ctrlKey){edcal.move(1,false);return false}if(a.keyCode===34&&!a.altKey&&!a.ctrlKey||a.keyCode===40&&a.ctrlKey){edcal.move(edcal.weeksPref,true);return false}if(a.keyCode===33&&!a.altKey&&!a.ctrlKey||a.keyCode===38&&a.ctrlKey){edcal.move(edcal.weeksPref,false);return false}}});edcal.getPosts(edcal.nextStartOfWeek(b).add(-3).weeks(),edcal.nextStartOfWeek(b).add(edcal.weeksPref+3).weeks());jQuery("#moveToToday").click(function(){edcal.moveTo(Date.today());
5
  edcal.getPosts(edcal.nextStartOfWeek(Date.today()).add(-3).weeks(),edcal.nextStartOfWeek(Date.today()).add(edcal.weeksPref+3).weeks());return false});jQuery("#moveToLast").click(function(){if(edcal.lastPostDate!=="-1"){var a=Date.parseExact(edcal.lastPostDate,"ddMMyyyy");edcal.moveTo(a);edcal.getPosts(edcal.nextStartOfWeek(a).add(-3).weeks(),edcal.nextStartOfWeek(a).add(edcal.weeksPref+3).weeks());return false}});jQuery("#prevmonth").click(function(){edcal.move(edcal.weeksPref,false);return false});
6
+ jQuery("#nextmonth").click(function(){edcal.move(edcal.weeksPref,true);return false});jQuery("#newPostScheduleButton").on("click",function(){if(jQuery(this).hasClass("disabled"))return false;jQuery(this).addClass("disabled");return edcal.savePost(null,false,true)});jQuery("#edcal-title-new-field").bind("keyup",function(a){jQuery("#edcal-title-new-field").val().length>0&&(!jQuery("#edcal-time").is(":visible")||jQuery("#edcal-time").val().length>0)?jQuery("#newPostScheduleButton").removeClass("disabled"):
7
+ jQuery("#newPostScheduleButton").addClass("disabled");if(a.keyCode===13)return edcal.savePost(null,true)});jQuery("#edcal-status").bind("change",function(){edcal.updatePublishButton()});jQuery("#edcal_weeks_pref").on("keyup",function(a){jQuery("#edcal_weeks_pref").val().length>0?jQuery("#edcal_applyoptions").removeClass("disabled"):jQuery("#edcal_applyoptions").addClass("disabled");a.keyCode===13&&edcal.saveOptions()});edcal.savePosition();edcal.addOptionsSection();jQuery("#edcal-time").timePicker({show24Hours:"H:i"===
8
  edcal.timeFormat,separator:":",step:30});jQuery("#showdraftsdrawer").click(function(){edcal.setDraftsDrawerVisible(!edcal.isDraftsDrawerVisible)})}},setDraftsDrawerVisible:function(a,b){var c=jQuery("#showdraftsdrawer");c.hasClass("isLoaded")?b&&b():(c.addClass("isLoaded"),edcal.setupDraftsdrawer(b));a?(jQuery("#cal_cont").css({"margin-right":"13.5%"}),jQuery("#draftsdrawer_cont").css({display:"block",width:"13%"}),c.html(edcal.str_hidedrafts)):(jQuery("#cal_cont").css({"margin-right":"0"}),jQuery("#draftsdrawer_cont").css({display:"none",
9
  width:"0"}),c.html(edcal.str_showdrafts));edcal.isDraftsDrawerVisible=a;jQuery.cookie("edcal_drafts_drawer",a,{expires:2060})},setupDraftsdrawer:function(a){jQuery("#draftsdrawer_loading").css({display:"block"});edcal.getPosts(edcal.NO_DATE,null,function(){edcal.initDraftsdrawer();a&&a()})},initDraftsdrawer:function(){var a;a=""+('<a href="#" adddate="'+edcal.NO_DATE+'" class="daynewlink" style="margin-top: 5px;"title="'+edcal.str_newdraft+'" id="unscheduledNewLink" onclick="edcal.addDraft(); return false;">'+
10
  edcal.str_addDraftLink+"</a>");a=a+'<ul class="postlist">'+edcal.getPostItems(edcal.NO_DATE);a+="</ul>";edcal.draggablePost("#row"+edcal._wDate.toString(edcal.internalDateFormat)+" li.post");edcal.makeDroppable(jQuery("#draftsdrawer div.day"));jQuery("#unscheduled").append(a);jQuery("#draftsdrawer_loading").css({display:"none"});a=jQuery("#cal_cont");jQuery("#unscheduled ul.postlist").css("min-height",a.height()-10-jQuery("#draftsdrawer .draftsdrawerheadcont").height()-jQuery("#unscheduledNewLink").outerHeight());
edcal.php CHANGED
@@ -18,7 +18,7 @@
18
  /*
19
  Plugin Name: WordPress Editorial Calendar
20
  Description: The Editorial Calendar makes it possible to see all your posts and drag and drop them to manage your blog.
21
- Version: 2.6
22
  Author: Colin Vernon, Justin Evans, Joachim Kudish, Mary Vogt, and Zack Grossbart
23
  Author URI: http://www.zackgrossbart.com
24
  Plugin URI: http://stresslimitdesign.com/editorial-calendar-plugin
@@ -355,10 +355,6 @@ class EdCal {
355
  background-image: url('<?php echo(plugins_url("images/tip_close.png", __FILE__ )); ?>');
356
  }
357
 
358
- .day.today .daylabel {
359
- background: url('<?php echo(admin_url("images/button-grad.png", __FILE__ )); ?>') repeat-x left top;
360
- }
361
-
362
  </style>
363
 
364
  <?php
@@ -499,6 +495,18 @@ class EdCal {
499
  if ($edcal_startDate == '00000000') {
500
  $where .= " AND post_date_gmt LIKE '0000%'";
501
  } else {
 
 
 
 
 
 
 
 
 
 
 
 
502
  $where .= " AND post_date >= '" . $edcal_startDate . "' AND post_date < '" . $edcal_endDate . "' AND post_date_gmt NOT LIKE '0000%'";
503
  }
504
  return $where;
@@ -849,6 +857,11 @@ class EdCal {
849
  $this->edcal_addNoCacheHeaders();
850
 
851
  $edcal_postid = isset($_GET['postid'])?$_GET['postid']:null;
 
 
 
 
 
852
  $post = get_post($edcal_postid, ARRAY_A);
853
  $title = $post['post_title'];
854
  $date = date('dmY', strtotime($post['post_date'])); // [TODO] : is there a better way to generate the date string ... ??
@@ -902,7 +915,7 @@ class EdCal {
902
  $post = get_post($edcal_postid, ARRAY_A);
903
  setup_postdata($post);
904
 
905
- $post['post_title'] = $edcal_newTitle;
906
 
907
  /*
908
  * Now we finally update the post into the database
@@ -948,7 +961,7 @@ class EdCal {
948
  $edcal_date = isset($_POST["date"])?$_POST["date"]:null;
949
 
950
  $my_post = array();
951
- $my_post['post_title'] = isset($_POST["title"])?$_POST["title"]:null;
952
  $my_post['post_content'] = isset($_POST["content"])?$_POST["content"]:null;
953
  $my_post['post_status'] = 'draft';
954
 
@@ -1019,7 +1032,7 @@ class EdCal {
1019
  }
1020
  }
1021
 
1022
- $my_post['post_title'] = isset($_POST["title"])?$_POST["title"]:null;
1023
  $my_post['post_content'] = isset($_POST["content"])?$_POST["content"]:null;
1024
 
1025
  if ($edcal_date_gmt != '0000-00-00 00:00:00' || $my_post['ID'] > 0) {
18
  /*
19
  Plugin Name: WordPress Editorial Calendar
20
  Description: The Editorial Calendar makes it possible to see all your posts and drag and drop them to manage your blog.
21
+ Version: 2.7
22
  Author: Colin Vernon, Justin Evans, Joachim Kudish, Mary Vogt, and Zack Grossbart
23
  Author URI: http://www.zackgrossbart.com
24
  Plugin URI: http://stresslimitdesign.com/editorial-calendar-plugin
355
  background-image: url('<?php echo(plugins_url("images/tip_close.png", __FILE__ )); ?>');
356
  }
357
 
 
 
 
 
358
  </style>
359
 
360
  <?php
495
  if ($edcal_startDate == '00000000') {
496
  $where .= " AND post_date_gmt LIKE '0000%'";
497
  } else {
498
+ /*
499
+ * The start date and end date come from the client and we want to make
500
+ * sure there's no SQL injection attack here. We know these values must
501
+ * be dates in a format like 2013-02-03. Date parsing is complex and PHP
502
+ * dates allow a lot of different formats. The simplest way to make sure
503
+ * this isn't a SQL injection attack is to remove the dashes and check if
504
+ * the result is numeric. If it is then this can't be a SQL injection attack.
505
+ */
506
+ if (!is_numeric(str_replace("-", "", $edcal_startDate)) || !is_numeric(str_replace("-", "", $edcal_endDate))) {
507
+ die("The specified start date and end date for the posts query must be numeric.");
508
+ }
509
+
510
  $where .= " AND post_date >= '" . $edcal_startDate . "' AND post_date < '" . $edcal_endDate . "' AND post_date_gmt NOT LIKE '0000%'";
511
  }
512
  return $where;
857
  $this->edcal_addNoCacheHeaders();
858
 
859
  $edcal_postid = isset($_GET['postid'])?$_GET['postid']:null;
860
+
861
+ if (!current_user_can('delete_post', $edcal_postid)) {
862
+ die("You don't have permission to delete this post");
863
+ }
864
+
865
  $post = get_post($edcal_postid, ARRAY_A);
866
  $title = $post['post_title'];
867
  $date = date('dmY', strtotime($post['post_date'])); // [TODO] : is there a better way to generate the date string ... ??
915
  $post = get_post($edcal_postid, ARRAY_A);
916
  setup_postdata($post);
917
 
918
+ $post['post_title'] = wp_strip_all_tags($edcal_newTitle);
919
 
920
  /*
921
  * Now we finally update the post into the database
961
  $edcal_date = isset($_POST["date"])?$_POST["date"]:null;
962
 
963
  $my_post = array();
964
+ $my_post['post_title'] = isset($_POST["title"])?wp_strip_all_tags($_POST["title"]):null;
965
  $my_post['post_content'] = isset($_POST["content"])?$_POST["content"]:null;
966
  $my_post['post_status'] = 'draft';
967
 
1032
  }
1033
  }
1034
 
1035
+ $my_post['post_title'] = isset($_POST["title"])?wp_strip_all_tags($_POST["title"]):null;
1036
  $my_post['post_content'] = isset($_POST["content"])?$_POST["content"]:null;
1037
 
1038
  if ($edcal_date_gmt != '0000-00-00 00:00:00' || $my_post['ID'] > 0) {
languages/editorial-calendar-it_IT.mo ADDED
Binary file
languages/editorial-calendar-it_IT.po ADDED
@@ -0,0 +1,292 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Translation of WordPress Editorial Calendar in Italian
2
+ # This file is distributed under the same license as the WordPress Editorial Calendar package.
3
+ msgid ""
4
+ msgstr ""
5
+ "PO-Revision-Date: 2013-01-17 16:27-0500\n"
6
+ "MIME-Version: 1.0\n"
7
+ "Content-Type: text/plain; charset=UTF-8\n"
8
+ "Content-Transfer-Encoding: 8bit\n"
9
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
+ "X-Generator: GlotPress/0.1\n"
11
+ "Project-Id-Version: WordPress Editorial Calendar\n"
12
+ "POT-Creation-Date: \n"
13
+ "Last-Translator: Zack Grossbart <zack@grossbart.com>\n"
14
+ "Language-Team: \n"
15
+
16
+ #: edcal.php:274
17
+ #: edcal.php:294
18
+ msgid "New Draft"
19
+ msgstr "Nuova Bozza"
20
+
21
+ #: edcal.php:292
22
+ msgid "Add a new draft"
23
+ msgstr "Aggiungi una nuova bozza"
24
+
25
+ #: edcal.php:322
26
+ msgid "The calendar can only show between 1 and 8 weeks at a time."
27
+ msgstr "Il calendario può mostrare solo tra 1 e 8 settimane alla volta."
28
+
29
+ #: edcal.php:325
30
+ #: edcal.php:400
31
+ msgid "Show Unscheduled Drafts"
32
+ msgstr "Mostra le bozze non programmate"
33
+
34
+ #: edcal.php:326
35
+ msgid "Hide Unscheduled Drafts"
36
+ msgstr "Nascondi le bozze non programmate"
37
+
38
+ #: edcal.php:391
39
+ msgid "Scroll the calendar and make the last post visible"
40
+ msgstr "Scorri il calendario e rendi l'ultimo post visibile"
41
+
42
+ #: edcal.php:400
43
+ msgid "Show unscheduled posts"
44
+ msgstr "Mostra i post non programmati"
45
+
46
+ #: edcal.php:406
47
+ msgid "Unscheduled draft posts"
48
+ msgstr "Post bozza non programmati"
49
+
50
+ #: edcal.php:406
51
+ msgid "Unscheduled"
52
+ msgstr "Non programmati"
53
+
54
+ #: edcal.php:379
55
+ msgid "%1$s Calendar"
56
+ msgstr "Calendario %1$s"
57
+
58
+ #: edcal.php:96
59
+ #: edcal.php:120
60
+ msgid "Calendar"
61
+ msgstr "Calendario"
62
+
63
+ #: edcal.php:263
64
+ #: edcal.php:524
65
+ msgid "en-US"
66
+ msgstr "it-IT"
67
+
68
+ #: edcal.php:271
69
+ msgid "%1$s by %2$s"
70
+ msgstr "%1$s di %2$s"
71
+
72
+ #: edcal.php:273
73
+ msgid "New Post"
74
+ msgstr "Nuovo post"
75
+
76
+ #: edcal.php:277
77
+ msgid " [DRAFT]"
78
+ msgstr "[BOZZA]"
79
+
80
+ #: edcal.php:278
81
+ msgid " [PENDING]"
82
+ msgstr "[IN ATTESA DI REVISIONE]"
83
+
84
+ #: edcal.php:279
85
+ msgid " [STICKY]"
86
+ msgstr "[IN EVIDENZA]"
87
+
88
+ #: edcal.php:280
89
+ msgid " [DRAFT, STICKY]"
90
+ msgstr "[BOZZA, IN EVIDENZA]"
91
+
92
+ #: edcal.php:281
93
+ msgid " [PENDING, STICKY]"
94
+ msgstr "[IN ATTESA DI REVISIONE, IN EVIDENZA]"
95
+
96
+ #: edcal.php:282
97
+ #: edcal.php:286
98
+ msgid "Edit"
99
+ msgstr "Modifica"
100
+
101
+ #: edcal.php:283
102
+ msgid "Quick Edit"
103
+ msgstr "Modifica veloce"
104
+
105
+ #: edcal.php:284
106
+ msgid "Delete"
107
+ msgstr "Cancella"
108
+
109
+ #: edcal.php:285
110
+ msgid "View"
111
+ msgstr "Visualizza"
112
+
113
+ #: edcal.php:287
114
+ msgid "Status:"
115
+ msgstr "Stato:"
116
+
117
+ #: edcal.php:288
118
+ #: edcal.php:483
119
+ msgid "Cancel"
120
+ msgstr "Annulla"
121
+
122
+ #: edcal.php:289
123
+ #: edcal.php:445
124
+ msgid "Title"
125
+ msgstr "Titolo"
126
+
127
+ #: edcal.php:290
128
+ #: edcal.php:450
129
+ msgid "Content"
130
+ msgstr "Contenuto"
131
+
132
+ #: edcal.php:291
133
+ msgid "Add a new post on %s"
134
+ msgstr "Aggiungi un nuovo post al %s"
135
+
136
+ #: edcal.php:293
137
+ msgid "New %s - "
138
+ msgstr "Nuovo %s -"
139
+
140
+ #: edcal.php:295
141
+ msgid "Update"
142
+ msgstr "Aggiorna"
143
+
144
+ #: edcal.php:296
145
+ #: edcal.php:482
146
+ msgid "Schedule"
147
+ msgstr "Programma"
148
+
149
+ #: edcal.php:297
150
+ msgid "Submit for Review"
151
+ msgstr "Invia per revisione"
152
+
153
+ #: edcal.php:298
154
+ msgid "Save"
155
+ msgstr "Salva"
156
+
157
+ #: edcal.php:299
158
+ msgid "Edit %1$s - %2$s"
159
+ msgstr "Modifica %1$s - %2$s"
160
+
161
+ #: edcal.php:300
162
+ #: edcal.php:467
163
+ msgid "Scheduled"
164
+ msgstr "Programmato"
165
+
166
+ #: edcal.php:302
167
+ msgid "You are about to delete the post \""
168
+ msgstr "Stai per cancellare il post \""
169
+
170
+ #: edcal.php:303
171
+ msgid "\". Press Cancel to stop, OK to delete."
172
+ msgstr "\". Premi Annulla per annullate, OK per cancellare."
173
+
174
+ #: edcal.php:305
175
+ msgid "Looks like someone else already moved this post."
176
+ msgstr "Sembra che qualcun altro abbia già spostato questo post."
177
+
178
+ #: edcal.php:306
179
+ msgid "You do not have permission to edit posts."
180
+ msgstr "Non hai i permessi per modificare post."
181
+
182
+ #: edcal.php:307
183
+ msgid "Invalid checksum for post. This is commonly a cross-site scripting error."
184
+ msgstr "Checksum non valido per il post. Questo è un comune errore di cross-site scripting."
185
+
186
+ #: edcal.php:308
187
+ msgid "There was an error contacting your blog."
188
+ msgstr "Si è verificato un errore nel contattare il tuo blog."
189
+
190
+ #: edcal.php:310
191
+ msgid "Screen Options"
192
+ msgstr "Opzioni schermo"
193
+
194
+ #: edcal.php:311
195
+ msgid "Colors"
196
+ msgstr "Colori"
197
+
198
+ #: edcal.php:312
199
+ msgid "Drafts: "
200
+ msgstr "Bozze:"
201
+
202
+ #: edcal.php:313
203
+ msgid "Apply"
204
+ msgstr "Applica"
205
+
206
+ #: edcal.php:314
207
+ msgid "Show on screen"
208
+ msgstr "Mostra sullo schermo"
209
+
210
+ #: edcal.php:315
211
+ msgid " weeks at a time"
212
+ msgstr "settimane per volta"
213
+
214
+ #: edcal.php:316
215
+ msgid "Show in Calendar Cell"
216
+ msgstr "Mostra nella cella del calendario"
217
+
218
+ #: edcal.php:317
219
+ msgid "Author"
220
+ msgstr "Autore"
221
+
222
+ #: edcal.php:318
223
+ #: edcal.php:461
224
+ msgid "Status"
225
+ msgstr "Stato"
226
+
227
+ #: edcal.php:319
228
+ msgid "Time of day"
229
+ msgstr "Ora del giorno"
230
+
231
+ #: edcal.php:320
232
+ msgid "An error occurred while loading the calendar: "
233
+ msgstr "Si è verificato un errore nel caricamento del calendario:"
234
+
235
+ #: edcal.php:323
236
+ msgid "Select the number of weeks for the calendar to show."
237
+ msgstr "Seleziona il numero di settimane da visualizzare nel calendario."
238
+
239
+ #: edcal.php:334
240
+ msgid "<h2>We're done</h2>We've finished collecting data. Thank you for helping us make the calendar better."
241
+ msgstr "<h2>Ci siamo</h2>Abbiamo finito di raccogliere i dati. Grazie per aiutarci a rendere il calendario migliore."
242
+
243
+ #: edcal.php:388
244
+ msgid "Jump back"
245
+ msgstr "Torna indietro"
246
+
247
+ #: edcal.php:390
248
+ msgid "Skip ahead"
249
+ msgstr "Salta avanti"
250
+
251
+ #: edcal.php:393
252
+ msgid "Scroll the calendar and make the today visible"
253
+ msgstr "Scorri il calendario e rendi visibile oggi"
254
+
255
+ #: edcal.php:393
256
+ msgid "Show Today"
257
+ msgstr "Mostra oggi"
258
+
259
+ #: edcal.php:436
260
+ msgid "Edit Post"
261
+ msgstr "Modifica post"
262
+
263
+ #: edcal.php:456
264
+ msgid "Time"
265
+ msgstr "Ora"
266
+
267
+ #: edcal.php:464
268
+ msgid "Draft"
269
+ msgstr "Bozza"
270
+
271
+ #: edcal.php:465
272
+ msgid "Pending Review"
273
+ msgstr "In attesa di revisione"
274
+
275
+ #: edcal.php:722
276
+ msgid "Posts "
277
+ msgstr "Post"
278
+
279
+ #: edcal.php:738
280
+ msgid "Post "
281
+ msgstr "Post"
282
+
283
+ #: edcal.php:865
284
+ #: edcal.php:868
285
+ msgid "Error in deleting..."
286
+ msgstr "Errore nel cancellare..."
287
+
288
+ #: edcal.php:191
289
+ #: edcal.php:275
290
+ msgid "ltr"
291
+ msgstr "ltr"
292
+
lib/languages/date-it-IT.js ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Version: 1.0 Alpha-1
3
+ * Build Date: 13-Nov-2007
4
+ * Copyright (c) 2006-2007, Coolite Inc. (http://www.coolite.com/). All rights reserved.
5
+ * License: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/.
6
+ * Website: http://www.datejs.com/ or http://www.coolite.com/datejs/
7
+ */
8
+ Date.CultureInfo={name:"it-IT",englishName:"Italian (Italy)",nativeName:"italiano (Italia)",dayNames:["domenica","lunedì","martedì","mercoledì","giovedì","venerdì","sabato"],abbreviatedDayNames:["dom","lun","mar","mer","gio","ven","sab"],shortestDayNames:["do","lu","ma","me","gi","ve","sa"],firstLetterDayNames:["d","l","m","m","g","v","s"],monthNames:["gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre"],abbreviatedMonthNames:["gen","feb","mar","apr","mag","giu","lug","ago","set","ott","nov","dic"],amDesignator:"",pmDesignator:"",firstDayOfWeek:1,twoDigitYearMax:2029,dateElementOrder:"dmy",formatPatterns:{shortDate:"dd/MM/yyyy",longDate:"dddd d MMMM yyyy",shortTime:"H.mm",longTime:"H.mm.ss",fullDateTime:"dddd d MMMM yyyy H.mm.ss",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"dd MMMM",yearMonth:"MMMM yyyy"},regexPatterns:{jan:/^gen(naio)?/i,feb:/^feb(braio)?/i,mar:/^mar(zo)?/i,apr:/^apr(ile)?/i,may:/^mag(gio)?/i,jun:/^giu(gno)?/i,jul:/^lug(lio)?/i,aug:/^ago(sto)?/i,sep:/^set(tembre)?/i,oct:/^ott(obre)?/i,nov:/^nov(embre)?/i,dec:/^dic(embre)?/i,sun:/^do(m(enica)?)?/i,mon:/^lu(n(edì)?)?/i,tue:/^ma(r(tedì)?)?/i,wed:/^me(r(coledì)?)?/i,thu:/^gi(o(vedì)?)?/i,fri:/^ve(n(erdì)?)?/i,sat:/^sa(b(ato)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|after|from)/i,subtract:/^(\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}};
9
+ Date.getMonthNumberFromName=function(name){var n=Date.CultureInfo.monthNames,m=Date.CultureInfo.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}
10
+ return-1;};Date.getDayNumberFromName=function(name){var n=Date.CultureInfo.dayNames,m=Date.CultureInfo.abbreviatedDayNames,o=Date.CultureInfo.shortestDayNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}}
11
+ return-1;};Date.isLeapYear=function(year){return(((year%4===0)&&(year%100!==0))||(year%400===0));};Date.getDaysInMonth=function(year,month){return[31,(Date.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month];};Date.getTimezoneOffset=function(s,dst){return(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST[s.toUpperCase()]:Date.CultureInfo.abbreviatedTimeZoneStandard[s.toUpperCase()];};Date.getTimezoneAbbreviation=function(offset,dst){var n=(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST:Date.CultureInfo.abbreviatedTimeZoneStandard,p;for(p in n){if(n[p]===offset){return p;}}
12
+ return null;};Date.prototype.clone=function(){return new Date(this.getTime());};Date.prototype.compareTo=function(date){if(isNaN(this)){throw new Error(this);}
13
+ if(date instanceof Date&&!isNaN(date)){return(this>date)?1:(this<date)?-1:0;}else{throw new TypeError(date);}};Date.prototype.equals=function(date){return(this.compareTo(date)===0);};Date.prototype.between=function(start,end){var t=this.getTime();return t>=start.getTime()&&t<=end.getTime();};Date.prototype.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};Date.prototype.addSeconds=function(value){return this.addMilliseconds(value*1000);};Date.prototype.addMinutes=function(value){return this.addMilliseconds(value*60000);};Date.prototype.addHours=function(value){return this.addMilliseconds(value*3600000);};Date.prototype.addDays=function(value){return this.addMilliseconds(value*86400000);};Date.prototype.addWeeks=function(value){return this.addMilliseconds(value*604800000);};Date.prototype.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,this.getDaysInMonth()));return this;};Date.prototype.addYears=function(value){return this.addMonths(value*12);};Date.prototype.add=function(config){if(typeof config=="number"){this._orient=config;return this;}
14
+ var x=config;if(x.millisecond||x.milliseconds){this.addMilliseconds(x.millisecond||x.milliseconds);}
15
+ if(x.second||x.seconds){this.addSeconds(x.second||x.seconds);}
16
+ if(x.minute||x.minutes){this.addMinutes(x.minute||x.minutes);}
17
+ if(x.hour||x.hours){this.addHours(x.hour||x.hours);}
18
+ if(x.month||x.months){this.addMonths(x.month||x.months);}
19
+ if(x.year||x.years){this.addYears(x.year||x.years);}
20
+ if(x.day||x.days){this.addDays(x.day||x.days);}
21
+ return this;};Date._validate=function(value,min,max,name){if(typeof value!="number"){throw new TypeError(value+" is not a Number.");}else if(value<min||value>max){throw new RangeError(value+" is not a valid value for "+name+".");}
22
+ return true;};Date.validateMillisecond=function(n){return Date._validate(n,0,999,"milliseconds");};Date.validateSecond=function(n){return Date._validate(n,0,59,"seconds");};Date.validateMinute=function(n){return Date._validate(n,0,59,"minutes");};Date.validateHour=function(n){return Date._validate(n,0,23,"hours");};Date.validateDay=function(n,year,month){return Date._validate(n,1,Date.getDaysInMonth(year,month),"days");};Date.validateMonth=function(n){return Date._validate(n,0,11,"months");};Date.validateYear=function(n){return Date._validate(n,1,9999,"seconds");};Date.prototype.set=function(config){var x=config;if(!x.millisecond&&x.millisecond!==0){x.millisecond=-1;}
23
+ if(!x.second&&x.second!==0){x.second=-1;}
24
+ if(!x.minute&&x.minute!==0){x.minute=-1;}
25
+ if(!x.hour&&x.hour!==0){x.hour=-1;}
26
+ if(!x.day&&x.day!==0){x.day=-1;}
27
+ if(!x.month&&x.month!==0){x.month=-1;}
28
+ if(!x.year&&x.year!==0){x.year=-1;}
29
+ if(x.millisecond!=-1&&Date.validateMillisecond(x.millisecond)){this.addMilliseconds(x.millisecond-this.getMilliseconds());}
30
+ if(x.second!=-1&&Date.validateSecond(x.second)){this.addSeconds(x.second-this.getSeconds());}
31
+ if(x.minute!=-1&&Date.validateMinute(x.minute)){this.addMinutes(x.minute-this.getMinutes());}
32
+ if(x.hour!=-1&&Date.validateHour(x.hour)){this.addHours(x.hour-this.getHours());}
33
+ if(x.month!==-1&&Date.validateMonth(x.month)){this.addMonths(x.month-this.getMonth());}
34
+ if(x.year!=-1&&Date.validateYear(x.year)){this.addYears(x.year-this.getFullYear());}
35
+ if(x.day!=-1&&Date.validateDay(x.day,this.getFullYear(),this.getMonth())){this.addDays(x.day-this.getDate());}
36
+ if(x.timezone){this.setTimezone(x.timezone);}
37
+ if(x.timezoneOffset){this.setTimezoneOffset(x.timezoneOffset);}
38
+ return this;};Date.prototype.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};Date.prototype.isLeapYear=function(){var y=this.getFullYear();return(((y%4===0)&&(y%100!==0))||(y%400===0));};Date.prototype.isWeekday=function(){return!(this.is().sat()||this.is().sun());};Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth());};Date.prototype.moveToFirstDayOfMonth=function(){return this.set({day:1});};Date.prototype.moveToLastDayOfMonth=function(){return this.set({day:this.getDaysInMonth()});};Date.prototype.moveToDayOfWeek=function(day,orient){var diff=(day-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};Date.prototype.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};Date.prototype.getDayOfYear=function(){return Math.floor((this-new Date(this.getFullYear(),0,1))/86400000);};Date.prototype.getWeekOfYear=function(firstDayOfWeek){var y=this.getFullYear(),m=this.getMonth(),d=this.getDate();var dow=firstDayOfWeek||Date.CultureInfo.firstDayOfWeek;var offset=7+1-new Date(y,0,1).getDay();if(offset==8){offset=1;}
39
+ var daynum=((Date.UTC(y,m,d,0,0,0)-Date.UTC(y,0,1,0,0,0))/86400000)+1;var w=Math.floor((daynum-offset+7)/7);if(w===dow){y--;var prevOffset=7+1-new Date(y,0,1).getDay();if(prevOffset==2||prevOffset==8){w=53;}else{w=52;}}
40
+ return w;};Date.prototype.isDST=function(){console.log('isDST');return this.toString().match(/(E|C|M|P)(S|D)T/)[2]=="D";};Date.prototype.getTimezone=function(){return Date.getTimezoneAbbreviation(this.getUTCOffset,this.isDST());};Date.prototype.setTimezoneOffset=function(s){var here=this.getTimezoneOffset(),there=Number(s)*-6/10;this.addMinutes(there-here);return this;};Date.prototype.setTimezone=function(s){return this.setTimezoneOffset(Date.getTimezoneOffset(s));};Date.prototype.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r[0]+r.substr(2);}else{r=(n+10000).toString();return"+"+r.substr(1);}};Date.prototype.getDayName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedDayNames[this.getDay()]:Date.CultureInfo.dayNames[this.getDay()];};Date.prototype.getMonthName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedMonthNames[this.getMonth()]:Date.CultureInfo.monthNames[this.getMonth()];};Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(format){var self=this;var p=function p(s){return(s.toString().length==1)?"0"+s:s;};return format?format.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(format){switch(format){case"hh":return p(self.getHours()<13?self.getHours():(self.getHours()-12));case"h":return self.getHours()<13?self.getHours():(self.getHours()-12);case"HH":return p(self.getHours());case"H":return self.getHours();case"mm":return p(self.getMinutes());case"m":return self.getMinutes();case"ss":return p(self.getSeconds());case"s":return self.getSeconds();case"yyyy":return self.getFullYear();case"yy":return self.getFullYear().toString().substring(2,4);case"dddd":return self.getDayName();case"ddd":return self.getDayName(true);case"dd":return p(self.getDate());case"d":return self.getDate().toString();case"MMMM":return self.getMonthName();case"MMM":return self.getMonthName(true);case"MM":return p((self.getMonth()+1));case"M":return self.getMonth()+1;case"t":return self.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return self.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return"";}}):this._toString();};
41
+ Date.now=function(){return new Date();};Date.today=function(){return Date.now().clearTime();};Date.prototype._orient=+1;Date.prototype.next=function(){this._orient=+1;return this;};Date.prototype.last=Date.prototype.prev=Date.prototype.previous=function(){this._orient=-1;return this;};Date.prototype._is=false;Date.prototype.is=function(){this._is=true;return this;};Number.prototype._dateElement="day";Number.prototype.fromNow=function(){var c={};c[this._dateElement]=this;return Date.now().add(c);};Number.prototype.ago=function(){var c={};c[this._dateElement]=this*-1;return Date.now().add(c);};(function(){var $D=Date.prototype,$N=Number.prototype;var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),de;var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;}
42
+ return this.moveToDayOfWeek(n,this._orient);};};for(var i=0;i<dx.length;i++){$D[dx[i]]=$D[dx[i].substring(0,3)]=df(i);}
43
+ var mf=function(n){return function(){if(this._is){this._is=false;return this.getMonth()===n;}
44
+ return this.moveToMonth(n,this._orient);};};for(var j=0;j<mx.length;j++){$D[mx[j]]=$D[mx[j].substring(0,3)]=mf(j);}
45
+ var ef=function(j){return function(){if(j.substring(j.length-1)!="s"){j+="s";}
46
+ return this["add"+j](this._orient);};};var nf=function(n){return function(){this._dateElement=n;return this;};};for(var k=0;k<px.length;k++){de=px[k].toLowerCase();$D[de]=$D[de+"s"]=ef(px[k]);$N[de]=$N[de+"s"]=nf(de);}}());Date.prototype.toJSONString=function(){return this.toString("yyyy-MM-ddThh:mm:ssZ");};Date.prototype.toShortDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortDatePattern);};Date.prototype.toLongDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.longDatePattern);};Date.prototype.toShortTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortTimePattern);};Date.prototype.toLongTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.longTimePattern);};Date.prototype.getOrdinal=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};
47
+ (function(){Date.Parsing={Exception:function(s){this.message="Parse error at '"+s.substring(0,10)+" ...'";}};var $P=Date.Parsing;var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);if(mx){return([mx[0],s.substring(mx[0].length)]);}else{throw new $P.Exception(s);}};},token:function(s){return function(s){return _.rtoken(new RegExp("^\s*"+s+"\s*"))(s);};},stoken:function(s){return _.rtoken(new RegExp("^"+s));},until:function(p){return function(s){var qx=[],rx=null;while(s.length){try{rx=p.call(this,s);}catch(e){qx.push(rx[0]);s=rx[1];continue;}
48
+ break;}
49
+ return[qx,s];};},many:function(p){return function(s){var rx=[],r=null;while(s.length){try{r=p.call(this,s);}catch(e){return[rx,s];}
50
+ rx.push(r[0]);s=r[1];}
51
+ return[rx,s];};},optional:function(p){return function(s){var r=null;try{r=p.call(this,s);}catch(e){return[null,s];}
52
+ return[r[0],r[1]];};},not:function(p){return function(s){try{p.call(this,s);}catch(e){return[null,s];}
53
+ throw new $P.Exception(s);};},ignore:function(p){return p?function(s){var r=null;r=p.call(this,s);return[null,r[1]];}:null;},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];for(var i=0;i<px.length;i++){rx.push(_.each(px[i],qx));}
54
+ return rx;},cache:function(rule){var cache={},r=null;return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s));}catch(e){r=cache[s]=e;}
55
+ if(r instanceof $P.Exception){throw r;}else{return r;}};},any:function(){var px=arguments;return function(s){var r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}
56
+ try{r=(px[i].call(this,s));}catch(e){r=null;}
57
+ if(r){return r;}}
58
+ throw new $P.Exception(s);};},each:function(){var px=arguments;return function(s){var rx=[],r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;}
59
+ try{r=(px[i].call(this,s));}catch(e){throw new $P.Exception(s);}
60
+ rx.push(r[0]);s=r[1];}
61
+ return[rx,s];};},all:function(){var px=arguments,_=_;return _.each(_.optional(px));},sequence:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;if(px.length==1){return px[0];}
62
+ return function(s){var r=null,q=null;var rx=[];for(var i=0;i<px.length;i++){try{r=px[i].call(this,s);}catch(e){break;}
63
+ rx.push(r[0]);try{q=d.call(this,r[1]);}catch(ex){q=null;break;}
64
+ s=q[1];}
65
+ if(!r){throw new $P.Exception(s);}
66
+ if(q){throw new $P.Exception(q[1]);}
67
+ if(c){try{r=c.call(this,r[1]);}catch(ey){throw new $P.Exception(r[1]);}}
68
+ return[rx,(r?r[1]:s)];};},between:function(d1,p,d2){d2=d2||d1;var _fn=_.each(_.ignore(d1),p,_.ignore(d2));return function(s){var rx=_fn.call(this,s);return[[rx[0][0],r[0][2]],rx[1]];};},list:function(p,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)));},set:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;for(var i=0;i<px.length;i++){q=null;p=null;r=null;last=(px.length==1);try{r=px[i].call(this,s);}catch(e){continue;}
69
+ rx=[[r[0]],r[1]];if(r[1].length>0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;}
70
+ if(!last&&q[1].length===0){last=true;}
71
+ if(!last){var qx=[];for(var j=0;j<px.length;j++){if(i!=j){qx.push(px[j]);}}
72
+ p=_.set(qx,d).call(this,q[1]);if(p[0].length>0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}}
73
+ if(rx[1].length<best[1].length){best=rx;}
74
+ if(best[1].length===0){break;}}
75
+ if(best[0].length===0){return best;}
76
+ if(c){try{q=c.call(this,best[1]);}catch(ey){throw new $P.Exception(best[1]);}
77
+ best[1]=q[1];}
78
+ return best;};},forward:function(gr,fname){return function(s){return gr[fname].call(this,s);};},replace:function(rule,repl){return function(s){var r=rule.call(this,s);return[repl,r[1]];};},process:function(rule,fn){return function(s){var r=rule.call(this,s);return[fn.call(this,r[0]),r[1]];};},min:function(min,rule){return function(s){var rx=rule.call(this,s);if(rx[0].length<min){throw new $P.Exception(s);}
79
+ return rx;};}};var _generator=function(op){return function(){var args=null,rx=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];}
80
+ if(args){for(var i=0,px=args.shift();i<px.length;i++){args.unshift(px[i]);rx.push(op.apply(null,args));args.shift();return rx;}}else{return op.apply(null,arguments);}};};var gx="optional not ignore cache".split(/\s/);for(var i=0;i<gx.length;i++){_[gx[i]]=_generator(_[gx[i]]);}
81
+ var _vector=function(op){return function(){if(arguments[0]instanceof Array){return op.apply(null,arguments[0]);}else{return op.apply(null,arguments);}};};var vx="each any all".split(/\s/);for(var j=0;j<vx.length;j++){_[vx[j]]=_vector(_[vx[j]]);}}());(function(){var flattenAndCompact=function(ax){var rx=[];for(var i=0;i<ax.length;i++){if(ax[i]instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]));}else{if(ax[i]){rx.push(ax[i]);}}}
82
+ return rx;};Date.Grammar={};Date.Translator={hour:function(s){return function(){this.hour=Number(s);};},minute:function(s){return function(){this.minute=Number(s);};},second:function(s){return function(){this.second=Number(s);};},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase();};},timezone:function(s){return function(){var n=s.replace(/[^\d\+\-]/g,"");if(n.length){this.timezoneOffset=Number(n);}else{this.timezone=s.toLowerCase();}};},day:function(x){var s=x[0];return function(){this.day=Number(s.match(/\d+/)[0]);};},month:function(s){return function(){this.month=((s.length==3)?Date.getMonthNumberFromName(s):(Number(s)-1));};},year:function(s){return function(){var n=Number(s);this.year=((s.length>2)?n:(n+(((n+2000)<Date.CultureInfo.twoDigitYearMax)?2000:1900)));};},rday:function(s){return function(){switch(s){case"yesterday":this.days=-1;break;case"tomorrow":this.days=1;break;case"today":this.days=0;break;case"now":this.days=0;this.now=true;break;}};},finishExact:function(x){x=(x instanceof Array)?x:[x];var now=new Date();this.year=now.getFullYear();this.month=now.getMonth();this.day=1;this.hour=0;this.minute=0;this.second=0;for(var i=0;i<x.length;i++){if(x[i]){x[i].call(this);}}
83
+ this.hour=(this.meridian=="p"&&this.hour<13)?this.hour+12:this.hour;if(this.day>Date.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.");}
84
+ var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});}
85
+ return r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;}
86
+ for(var i=0;i<x.length;i++){if(typeof x[i]=="function"){x[i].call(this);}}
87
+ if(this.now){return new Date();}
88
+ var today=Date.today();var method=null;var expression=!!(this.days!=null||this.orient||this.operator);if(expression){var gap,mod,orient;orient=((this.orient=="past"||this.operator=="subtract")?-1:1);if(this.weekday){this.unit="day";gap=(Date.getDayNumberFromName(this.weekday)-today.getDay());mod=7;this.days=gap?((gap+(orient*mod))%mod):(orient*mod);}
89
+ if(this.month){this.unit="month";gap=(this.month-today.getMonth());mod=12;this.months=gap?((gap+(orient*mod))%mod):(orient*mod);this.month=null;}
90
+ if(!this.unit){this.unit="day";}
91
+ if(this[this.unit+"s"]==null||this.operator!=null){if(!this.value){this.value=1;}
92
+ if(this.unit=="week"){this.unit="day";this.value=this.value*7;}
93
+ this[this.unit+"s"]=this.value*orient;}
94
+ return today.add(this);}else{if(this.meridian&&this.hour){this.hour=(this.hour<13&&this.meridian=="p")?this.hour+12:this.hour;}
95
+ if(this.weekday&&!this.day){this.day=(today.addDays((Date.getDayNumberFromName(this.weekday)-today.getDay()))).getDate();}
96
+ if(this.month&&!this.day){this.day=1;}
97
+ return today.set(this);}}};var _=Date.Parsing.Operators,g=Date.Grammar,t=Date.Translator,_fn;g.datePartDelimiter=_.rtoken(/^([\s\-\.\,\/\x27]+)/);g.timePartDelimiter=_.stoken(":");g.whiteSpace=_.rtoken(/^\s*/);g.generalDelimiter=_.rtoken(/^(([\s\,]|at|on)+)/);var _C={};g.ctoken=function(keys){var fn=_C[keys];if(!fn){var c=Date.CultureInfo.regexPatterns;var kx=keys.split(/\s+/),px=[];for(var i=0;i<kx.length;i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]));}
98
+ fn=_C[keys]=_.any.apply(null,px);}
99
+ return fn;};g.ctoken2=function(key){return _.rtoken(Date.CultureInfo.regexPatterns[key]);};g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));g.hms=_.cache(_.sequence([g.H,g.mm,g.ss],g.timePartDelimiter));g.t=_.cache(_.process(g.ctoken2("shortMeridian"),t.meridian));g.tt=_.cache(_.process(g.ctoken2("longMeridian"),t.meridian));g.z=_.cache(_.process(_.rtoken(/^(\+|\-)?\s*\d\d\d\d?/),t.timezone));g.zz=_.cache(_.process(_.rtoken(/^(\+|\-)\s*\d\d\d\d/),t.timezone));g.zzz=_.cache(_.process(g.ctoken2("timezone"),t.timezone));g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));g.time=_.each(_.optional(_.ignore(_.stoken("T"))),g.hms,g.timeSuffix);g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1]|\d)/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1])/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.ddd=g.dddd=_.cache(_.process(g.ctoken("sun mon tue wed thu fri sat"),function(s){return function(){this.weekday=s;};}));g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d|\d)/),t.month));g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d)/),t.month));g.MMM=g.MMMM=_.cache(_.process(g.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),t.month));g.y=_.cache(_.process(_.rtoken(/^(\d\d?)/),t.year));g.yy=_.cache(_.process(_.rtoken(/^(\d\d)/),t.year));g.yyy=_.cache(_.process(_.rtoken(/^(\d\d?\d?\d?)/),t.year));g.yyyy=_.cache(_.process(_.rtoken(/^(\d\d\d\d)/),t.year));_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2("timeContext")));};g.day=_fn(g.d,g.dd);g.month=_fn(g.M,g.MMM);g.year=_fn(g.yyyy,g.yy);g.orientation=_.process(g.ctoken("past future"),function(s){return function(){this.orient=s;};});g.operator=_.process(g.ctoken("add subtract"),function(s){return function(){this.operator=s;};});g.rday=_.process(g.ctoken("yesterday tomorrow today now"),t.rday);g.unit=_.process(g.ctoken("minute hour day week month year"),function(s){return function(){this.unit=s;};});g.value=_.process(_.rtoken(/^\d\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\D/g,"");};});g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);_fn=function(){return _.set(arguments,g.datePartDelimiter);};g.mdy=_fn(g.ddd,g.month,g.day,g.year);g.ymd=_fn(g.ddd,g.year,g.month,g.day);g.dmy=_fn(g.ddd,g.day,g.month,g.year);g.date=function(s){return((g[Date.CultureInfo.dateElementOrder]||g.mdy).call(this,s));};g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt];}else{throw Date.Parsing.Exception(fmt);}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s));}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact);});var _F={};var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0]);};g.formats=function(fx){if(fx instanceof Array){var rx=[];for(var i=0;i<fx.length;i++){rx.push(_get(fx[i]));}
100
+ return _.any.apply(null,rx);}else{return _get(fx);}};g._formats=g.formats(["yyyy-MM-ddTHH:mm:ss","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","d"]);g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);g.start=function(s){try{var r=g._formats.call({},s);if(r[1].length===0){return r;}}catch(e){}
101
+ return g._start.call({},s);};}());Date._parse=Date.parse;Date.parse=function(s){var r=null;if(!s){return null;}
102
+ try{r=Date.Grammar.start.call({},s);}catch(e){return null;}
103
+ return((r[1].length===0)?r[0]:null);};Date.getParseFunction=function(fx){var fn=Date.Grammar.formats(fx);return function(s){var r=null;try{r=fn.call({},s);}catch(e){return null;}
104
+ return((r[1].length===0)?r[0]:null);};};Date.parseExact=function(s,fx){return Date.getParseFunction(fx)(s);};
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: cvernon, justinstresslimit, jkudish, MaryVogt, zgrossbart
3
  Tags: posts, post, calendar, AJAX, admin, administration
4
  Requires at least: 2.8.5
5
- Tested up to: 3.5
6
- Stable tag: 2.6
7
 
8
  The Editorial Calendar makes it possible to see all your posts and drag and drop them to manage your blog.
9
 
@@ -109,7 +109,7 @@ The editorial calendar follows the Week Starts On preference on the WordPress Ge
109
 
110
  = What languages does the calendar support? =
111
 
112
- The calendar is available in Brazilian Portuguese, Croatian, Czech, Dutch, English, French, German, Greek, Hebrew, Japanese, Lithuanian, Norwegian, Polish, Russian, Spanish, and Swedish.
113
 
114
  = Can I add new languages? =
115
 
@@ -173,6 +173,20 @@ Moving published posts can cause problems with some RSS feeds and is generally n
173
 
174
  == Changelog ==
175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  = 2.6 =
177
 
178
  Fixed some layout issues with the previous and next calendar buttons in WordPress 3.5.
2
  Contributors: cvernon, justinstresslimit, jkudish, MaryVogt, zgrossbart
3
  Tags: posts, post, calendar, AJAX, admin, administration
4
  Requires at least: 2.8.5
5
+ Tested up to: 3.5.1
6
+ Stable tag: 2.7
7
 
8
  The Editorial Calendar makes it possible to see all your posts and drag and drop them to manage your blog.
9
 
109
 
110
  = What languages does the calendar support? =
111
 
112
+ The calendar is available in Brazilian Portuguese, Croatian, Czech, Dutch, English, French, German, Greek, Hebrew, Italian, Japanese, Lithuanian, Norwegian, Polish, Russian, Spanish, and Swedish.
113
 
114
  = Can I add new languages? =
115
 
173
 
174
  == Changelog ==
175
 
176
+ = 2.7 =
177
+
178
+ The calendar is now available in Italian thanks to Lorenzo Boldorini who blogs at http://www.webqbe.it.
179
+
180
+ Changed all calls of the jQuery live method to use the new on method so the calendar will keep working when WordPress upgrades to jQuery 1.9.
181
+
182
+ The Mozilla team is now using the Editorial Calendar in one of their blogs and performed a security review of the calendar. They found a couple of potential issues which were fixed in this release. https://bugzilla.mozilla.org/show_bug.cgi?id=738112
183
+
184
+ The Editorial Calendar is now stripping all tags out of post titles created from the calendar. This fixes a potential security issue found by the Mozilla security testing team. https://bugzilla.mozilla.org/show_bug.cgi?id=738112
185
+
186
+ We are now preventing a potential SQL injection attack with the start date and end date filter when querying posts. This fixes a potential security issue found by the Mozilla security testing team. https://bugzilla.mozilla.org/show_bug.cgi?id=738112
187
+
188
+ We are adding an extra check to make sure that authors can't delete a post created by another author. This fixes a potential security issue found by the Mozilla security testing team. https://bugzilla.mozilla.org/show_bug.cgi?id=738112
189
+
190
  = 2.6 =
191
 
192
  Fixed some layout issues with the previous and next calendar buttons in WordPress 3.5.