- Sponsor
-
Notifications
You must be signed in to change notification settings - Fork 75
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Branch: refs/heads/master Date: 2016-12-23T14:28:36-06:00 Author: Johannes Raggam (thet) <[email protected]> Commit: plone/plone.app.upgrade@02cf65b New mockup releases for Plone 5.0 and 5.1. Files changed: A plone/app/upgrade/v50/profiles/to_507/registry.xml M CHANGES.rst M plone/app/upgrade/v50/configure.zcml M plone/app/upgrade/v50/final.py M plone/app/upgrade/v50/profiles.zcml M plone/app/upgrade/v51/profiles/to_beta1/registry.xml Repository: plone.app.upgrade Branch: refs/heads/master Date: 2016-12-24T03:09:39-06:00 Author: Johannes Raggam (thet) <[email protected]> Commit: plone/plone.app.upgrade@1758b0c Merge pull request #101 from plone/thet-newmockup New mockup releases for Plone 5.0 and 5.1. Files changed: A plone/app/upgrade/v50/profiles/to_507/registry.xml M CHANGES.rst M plone/app/upgrade/v50/configure.zcml M plone/app/upgrade/v50/final.py M plone/app/upgrade/v50/profiles.zcml M plone/app/upgrade/v51/profiles/to_beta1/registry.xml
- 6.1.0b2
- 6.1.0b1
- 6.1.0a5
- 6.1.0a4
- 6.1.0a3
- 6.1.0a2
- 6.1.0a1
- 6.0.14
- 6.0.13
- 6.0.12
- 6.0.11.1
- 6.0.11
- 6.0.10.1
- 6.0.10
- 6.0.9
- 6.0.8
- 6.0.7
- 6.0.6
- 6.0.5
- 6.0.4
- 6.0.3
- 6.0.2
- 6.0.1
- 6.0.0.2
- 6.0.0.1
- 6.0.0
- 6.0.0rc2
- 6.0.0rc1
- 6.0.0b3
- 6.0.0b2
- 6.0.0b1
- 6.0.0a6
- 6.0.0a4
- 6.0.0a3
- 6.0.0a2
- 6.0.0a1
- 5.2.15
- 5.2.14
- 5.2.13
- 5.2.12
- 5.2.11
- 5.2.10.2
- 5.2.10.1
- 5.2.10
- 5.2.9
- 5.2.8
- 5.2.7
- 5.2.6
- 5.2.5
- 5.2.4
- 5.2.3
- 5.2.2
- 5.1.7
- 5.1.4
Showing
1 changed file
with
204 additions
and
770 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,806 +1,240 @@ | ||
Repository: mockup | ||
Repository: plone.app.upgrade | ||
|
||
|
||
Branch: refs/heads/master | ||
Date: 2016-12-23T14:05:26-06:00 | ||
Date: 2016-12-23T14:28:36-06:00 | ||
Author: Johannes Raggam (thet) <thetetet@gmail.com> | ||
Commit: https://github.com/plone/mockup/commit/40cfdb68f246c4f3f09899bb793a5226c0c80b7b | ||
Commit: https://github.com/plone/plone.app.upgrade/commit/02cf65bee9d48cf678f7ad77d76c5164bae0297f | ||
|
||
PickADate default time | ||
PickADate pattern: Add option to automatically set the time when changing the date. | ||
It defaults to set the time to the current time. | ||
New mockup releases for Plone 5.0 and 5.1. | ||
|
||
Files changed: | ||
A plone/app/upgrade/v50/profiles/to_507/registry.xml | ||
M CHANGES.rst | ||
M mockup/patterns/pickadate/pattern.js | ||
M mockup/tests/pattern-pickadate-test.js | ||
M plone/app/upgrade/v50/configure.zcml | ||
M plone/app/upgrade/v50/final.py | ||
M plone/app/upgrade/v50/profiles.zcml | ||
M plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
|
||
diff --git a/CHANGES.rst b/CHANGES.rst | ||
index 533a639..92e9cf9 100644 | ||
index 01577d9..b8d9491 100644 | ||
--- a/CHANGES.rst | ||
+++ b/CHANGES.rst | ||
@@ -13,6 +13,10 @@ Incompatibilities: | ||
@@ -11,6 +11,9 @@ Breaking changes: | ||
|
||
New: | ||
New features: | ||
|
||
+- PickADate pattern: Add option to automatically set the time when changing the date. | ||
+ It defaults to set the time to the current time. | ||
+- New mockup releases for Plone 5.0 and 5.1. | ||
+ [thet] | ||
+ | ||
- Change default sort option in livesearch pattern. | ||
[rodfersou] | ||
|
||
diff --git a/mockup/patterns/pickadate/pattern.js b/mockup/patterns/pickadate/pattern.js | ||
index 9002452..a067c38 100644 | ||
--- a/mockup/patterns/pickadate/pattern.js | ||
+++ b/mockup/patterns/pickadate/pattern.js | ||
@@ -3,6 +3,7 @@ | ||
* Options: | ||
* date(object): Date widget options described here. If false is selected date picker wont be shown. ({{selectYears: true, selectMonths: true }) | ||
* time(object): Time widget options described here. If false is selected time picker wont be shown. ({}) | ||
+ * autoSetTimeOnDateChange(string): Automatically set the time when a date is set. You can specify an offset with a special syntax - a stringified JSON Array in the form of "[H,M]" will set it to hour:minute. If you prepend an "+" or "-", this will added or subscracted to the current time. It does not go beyond 12:00am. ("+[0,0]"). | ||
* separator(string): Separator between date and time if both are enabled. | ||
* (' ') | ||
* classClearName(string): Class name of element that is generated by pattern. ('pattern-pickadate-clear') | ||
@@ -114,6 +115,7 @@ define([ | ||
}, | ||
time: {}, | ||
timezone: null, | ||
+ autoSetTimeOnDateChange: '+[0,0]', | ||
classWrapperName: 'pattern-pickadate-wrapper', | ||
classSeparatorName: 'pattern-pickadate-separator', | ||
classDateName: 'pattern-pickadate-date', | ||
@@ -133,14 +135,66 @@ define([ | ||
} | ||
return value; | ||
}, | ||
+ parseTimeOffset: function(timeOffset) { | ||
+ var op = undefined; | ||
+ if (timeOffset.indexOf('+') === 0) { | ||
+ op = '+'; | ||
+ timeOffset = timeOffset.split('+')[1]; | ||
+ } else if (timeOffset.indexOf('-') === 0) { | ||
+ op = '-'; | ||
+ timeOffset = timeOffset.split('-')[1]; | ||
+ } | ||
+ try { | ||
+ timeOffset = JSON.parse(timeOffset); | ||
+ } catch (e) { | ||
+ timeOffset = undefined; | ||
+ } | ||
+ if (timeOffset === false) { | ||
+ return false; | ||
+ } else if (timeOffset === true || Array.isArray(timeOffset) !== true) { | ||
+ return [0,0]; | ||
+ } | ||
+ | ||
+ var hours = parseInt(timeOffset[0], 10) || 0, | ||
+ mins = parseInt(timeOffset[1], 10) || 0; | ||
+ | ||
+ if (op === '+' || op === '-') { | ||
+ | ||
+ var offset = new Date(), | ||
+ curHours = offset.getHours(), | ||
+ curMins = offset.getMinutes(); | ||
+ | ||
+ if (op === '+') { | ||
+ hours = curHours + hours; | ||
+ if (hours > 23) { | ||
+ hours = 23; | ||
+ } | ||
+ mins = curMins + mins; | ||
+ if (mins > 59) { | ||
+ mins = 59; | ||
+ } | ||
+ } else if (op === '-') { | ||
+ hours = curHours - hours; | ||
+ if (hours < 0) { | ||
+ hours = 0; | ||
+ } | ||
+ mins = curMins - mins; | ||
+ if (mins < 0) { | ||
+ mins = 0; | ||
+ } | ||
+ } | ||
+ } | ||
+ return [hours,mins]; | ||
+ }, | ||
init: function() { | ||
var self = this, | ||
- value = self.$el.val().split(' '), | ||
- dateValue = value[0] || '', | ||
- timeValue = value[1] || ''; | ||
+ value = self.$el.val().split(' '), | ||
+ dateValue = value[0] || '', | ||
+ timeValue = value[1] || ''; | ||
|
||
self.options.date = self.isFalse(self.options.date); | ||
self.options.time = self.isFalse(self.options.time); | ||
+ self.options.autoSetTimeOnDateChange = self.parseTimeOffset(self.options.autoSetTimeOnDateChange); | ||
|
||
if (self.options.date === false) { | ||
timeValue = value[0]; | ||
@@ -168,6 +222,11 @@ define([ | ||
self.$time.attr('data-value') !== '') { | ||
self.updateValue.call(self); | ||
} | ||
+ if (self.options.autoSetTimeOnDateChange !== false && self.$time) { | ||
+ if (! self.$time.pickatime('picker').get('select')) { | ||
+ self.$time.pickatime('picker').set('select', self.options.autoSetTimeOnDateChange); | ||
+ } | ||
+ } | ||
} | ||
if (e.hasOwnProperty('clear')) { | ||
self.$el.val(''); | ||
diff --git a/mockup/tests/pattern-pickadate-test.js b/mockup/tests/pattern-pickadate-test.js | ||
index 557956d..ce7ce9d 100644 | ||
--- a/mockup/tests/pattern-pickadate-test.js | ||
+++ b/mockup/tests/pattern-pickadate-test.js | ||
@@ -1,3 +1,4 @@ | ||
+/* global define, describe, beforeEach, afterEach, it */ | ||
define([ | ||
'expect', | ||
'jquery', | ||
@@ -5,7 +6,7 @@ define([ | ||
'pat-registry', | ||
'mockup-patterns-pickadate', | ||
'mockup-patterns-select2' | ||
-], function(expect, $, sinon, registry, PickADate, Select2) { | ||
+], function(expect, $, sinon, registry, PickADate) { | ||
'use strict'; | ||
|
||
window.mocha.setup('bdd'); | ||
@@ -18,8 +19,8 @@ define([ | ||
describe('PickADate', function() { | ||
|
||
beforeEach(function() { | ||
- this.$el = $('<div><input class="pat-pickadate" /></div>'); | ||
- this.clock = sinon.useFakeTimers(); | ||
+ this.$el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "false"}\'/></div>'); | ||
+ this.clock = sinon.useFakeTimers(new Date(2016,12,23,15,30).getTime()); | ||
}); | ||
|
||
afterEach(function() { | ||
@@ -40,7 +41,7 @@ define([ | ||
expect($('.pattern-pickadate-wrapper', this.$el).size()).to.equal(1); | ||
|
||
var dateWrapper = $('.pattern-pickadate-date', self.$el).parent(), | ||
- timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
+ timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
|
||
// main element is hidden | ||
expect(self.$el.is(':hidden')).to.be.equal(true); | ||
@@ -61,7 +62,7 @@ define([ | ||
var self = this; | ||
registry.scan(self.$el); | ||
var dateWrapper = $('.pattern-pickadate-date', self.$el).parent(), | ||
- timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
+ timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
|
||
// we open date picker (calendar) | ||
$('.pattern-pickadate-date', self.$el).click(); | ||
@@ -77,7 +78,7 @@ define([ | ||
var self = this; | ||
registry.scan(self.$el); | ||
var dateWrapper = $('.pattern-pickadate-date', self.$el).parent(), | ||
- timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
+ timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
|
||
// select some date | ||
$('.pattern-pickadate-date', self.$el).click(); | ||
@@ -375,18 +376,18 @@ define([ | ||
describe('PickADate with timezone', function() { | ||
it('has date, time and timezone', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
- '{"id":"Europe/Vienna","text":"Europe/Vienna"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
+ '{"id":"Europe/Vienna","text":"Europe/Vienna"}]},' + | ||
+ '"autoSetTimeOnDateChange": "false"}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input); | ||
|
||
// date and time should exist by default | ||
var $timeWrapper = $('.pattern-pickadate-time-wrapper', self.$el), | ||
- $dateWrapper = $('.pattern-pickadate-date-wrapper', self.$el); | ||
+ $dateWrapper = $('.pattern-pickadate-date-wrapper', self.$el); | ||
expect($timeWrapper.size()).to.equal(1); | ||
expect($dateWrapper.size()).to.equal(1); | ||
|
||
@@ -412,10 +413,10 @@ define([ | ||
|
||
// set date and time and check if value of main element gets timezone | ||
$('.pattern-pickadate-date', self.$el).click(); | ||
- var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ $dateWrapper.find('td > div').first().click(); | ||
expect($input.val()).to.equal(''); | ||
$('.pattern-pickadate-time', self.$el).click(); | ||
- var $selectedTime = $timeWrapper.find('li').first().next().click(); | ||
+ $timeWrapper.find('li').first().next().click(); | ||
expect($input.val()).to.equal($('input:last', $dateWrapper).val() + ' ' + $('input:last', $timeWrapper).val() + ' ' + 'Europe/Berlin'); | ||
|
||
// change timezone to second value and check if value of main element changes | ||
@@ -426,12 +427,12 @@ define([ | ||
|
||
it('should take the default timezone when it is set', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Vienna", "data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
- '{"id":"Europe/Vienna","text":"Europe/Vienna"},' + | ||
- '{"id":"Europe/Madrid","text":"Europe/Madrid"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Vienna", "data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
+ '{"id":"Europe/Vienna","text":"Europe/Vienna"},' + | ||
+ '{"id":"Europe/Madrid","text":"Europe/Madrid"}' + | ||
+ ']}}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input); | ||
@@ -444,11 +445,11 @@ define([ | ||
|
||
it('should only set the default value when it exists in the list', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Madrid", "data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
- '{"id":"Europe/Vienna","text":"Europe/Vienna"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Madrid", "data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
+ '{"id":"Europe/Vienna","text":"Europe/Vienna"}' + | ||
+ ']}}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input, ['pickadate']); | ||
@@ -461,10 +462,10 @@ define([ | ||
|
||
it('should write to default and disable the dropdown field if only one value exists', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"}' + | ||
+ ']}}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input, ['pickadate']); | ||
@@ -478,6 +479,121 @@ define([ | ||
expect($('.pattern-pickadate-timezone').data('select2')._enabled).to.equal(false); | ||
expect($('.select2-container-disabled').size()).to.equal(1); | ||
}); | ||
+ | ||
+ }); | ||
+ | ||
+ describe('automatically set the time on changing the date', function() { | ||
+ | ||
+ it('parseTimeOffset works as expected', function() { | ||
+ | ||
+ var pickadate = new PickADate(this.$el, {}); | ||
+ | ||
+ // test false/true | ||
+ expect(pickadate.parseTimeOffset('false')).to.be.equal(false); | ||
+ expect(pickadate.parseTimeOffset('true')).to.eql([0,0]); | ||
+ | ||
+ // test setting straight to time | ||
+ expect(pickadate.parseTimeOffset('[12, 34]')).to.eql([12,34]); | ||
+ | ||
+ // test adding / substracting | ||
+ expect(pickadate.parseTimeOffset('+[1, 10]')).to.eql([16,40]); | ||
+ expect(pickadate.parseTimeOffset('-[1, 10]')).to.eql([14,20]); | ||
+ | ||
+ // Test not exceeding dat/hour boundaries | ||
+ expect(pickadate.parseTimeOffset('+[10, 10]')).to.eql([23,40]); | ||
+ expect(pickadate.parseTimeOffset('-[16, 10]')).to.eql([0,20]); | ||
+ expect(pickadate.parseTimeOffset('+[1, 40]')).to.eql([16,59]); | ||
+ expect(pickadate.parseTimeOffset('-[1, 40]')).to.eql([14,0]); | ||
+ expect(pickadate.parseTimeOffset('+[1000, 1000]')).to.eql([23,59]); | ||
+ expect(pickadate.parseTimeOffset('-[1000, 1000]')).to.eql([0,0]); | ||
+ | ||
+ // test complete/partly nonsense | ||
+ expect(pickadate.parseTimeOffset('blabla')).to.eql([0,0]); | ||
+ expect(pickadate.parseTimeOffset('[10,20]')).to.eql([10,20]); | ||
+ expect(pickadate.parseTimeOffset('[10,"aha"]')).to.eql([10,0]); | ||
+ expect(pickadate.parseTimeOffset('["who", 20]')).to.eql([0,20]); | ||
+ | ||
+ }); | ||
+ | ||
+ it('sets the time when date is changed per default', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" />'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('15,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('15:30'); | ||
+ }); | ||
+ | ||
+ it('sets the time to a specific value when date is changed', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "[12,30]"}\'/>'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('12,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('12:30'); | ||
+ }); | ||
+ | ||
+ it('sets the time to a positive offset of the current time when date is changed', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "+[1,0]"}\'/>'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('16,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('16:30'); | ||
+ }); | ||
+ | ||
+ it('sets the time to a negative offset of the current time when date is changed', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "-[1,0]"}\'/>'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('14,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('14:30'); | ||
+ }); | ||
|
||
}); | ||
|
||
- Remove jquery.cookie from plone-logged-in bundle's stub_js_modules. | ||
The toolbar, which has a dependency on jquery.cookie, | ||
was moved from the plone bundle to plone-logged-in in CMPlone 5.1a2. | ||
diff --git a/plone/app/upgrade/v50/configure.zcml b/plone/app/upgrade/v50/configure.zcml | ||
index 9fb12f6..af8efe0 100644 | ||
--- a/plone/app/upgrade/v50/configure.zcml | ||
+++ b/plone/app/upgrade/v50/configure.zcml | ||
@@ -327,4 +327,17 @@ | ||
|
||
</gs:upgradeSteps> | ||
|
||
+ <gs:upgradeSteps | ||
+ source="5016" | ||
+ destination="5017" | ||
+ profile="Products.CMFPlone:plone"> | ||
+ | ||
+ <gs:upgradeStep | ||
+ title="Run to507 upgrade profile." | ||
+ description="" | ||
+ handler=".final.to507" | ||
+ /> | ||
+ | ||
+ </gs:upgradeSteps> | ||
+ | ||
</configure> | ||
diff --git a/plone/app/upgrade/v50/final.py b/plone/app/upgrade/v50/final.py | ||
index 127fd32..82a3152 100644 | ||
--- a/plone/app/upgrade/v50/final.py | ||
+++ b/plone/app/upgrade/v50/final.py | ||
@@ -96,3 +96,8 @@ def to502(context): | ||
def to503(context): | ||
"""5.0.2 -> 5.0.3""" | ||
loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to503') | ||
+ | ||
+ | ||
+def to507(context): | ||
+ """5.0.6 -> 5.0.7""" | ||
+ loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to507') | ||
diff --git a/plone/app/upgrade/v50/profiles.zcml b/plone/app/upgrade/v50/profiles.zcml | ||
index 16cf6db..77ff768 100644 | ||
--- a/plone/app/upgrade/v50/profiles.zcml | ||
+++ b/plone/app/upgrade/v50/profiles.zcml | ||
@@ -111,4 +111,13 @@ | ||
provides="Products.GenericSetup.interfaces.EXTENSION" | ||
/> | ||
|
||
+ <genericsetup:registerProfile | ||
+ name="to507" | ||
+ title="Upgrade profile for Plone 5.0.6 to Plone 5.0.7" | ||
+ description="" | ||
+ directory="profiles/to_507" | ||
+ for="Products.CMFPlone.interfaces.IMigratingPloneSiteRoot" | ||
+ provides="Products.GenericSetup.interfaces.EXTENSION" | ||
+ /> | ||
+ | ||
</configure> | ||
diff --git a/plone/app/upgrade/v50/profiles/to_507/registry.xml b/plone/app/upgrade/v50/profiles/to_507/registry.xml | ||
new file mode 100644 | ||
index 0000000..ec0debb | ||
--- /dev/null | ||
+++ b/plone/app/upgrade/v50/profiles/to_507/registry.xml | ||
@@ -0,0 +1,13 @@ | ||
+<?xml version="1.0"?> | ||
+<registry> | ||
+ <records | ||
+ interface="Products.CMFPlone.interfaces.IBundleRegistry" | ||
+ prefix="plone.bundles/plone-logged-in"> | ||
+ <value key="last_compilation">2016-12-23 00:00:00</value> | ||
+ </records> | ||
+ <records | ||
+ interface="Products.CMFPlone.interfaces.IBundleRegistry" | ||
+ prefix="plone.bundles/plone"> | ||
+ <value key="last_compilation">2016-12-23 00:00:00</value> | ||
+ </records> | ||
+</registry> | ||
diff --git a/plone/app/upgrade/v51/profiles/to_beta1/registry.xml b/plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
index 9a622bd..569adc6 100644 | ||
--- a/plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
+++ b/plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
@@ -3,7 +3,7 @@ | ||
|
||
<!-- Update ``last_compilation`` to deliver new bundles --> | ||
<records prefix="plone.bundles/plone" interface="Products.CMFPlone.interfaces.IBundleRegistry" purge="False"> | ||
- <value key="last_compilation">2016-12-13 00:00:00</value> | ||
+ <value key="last_compilation">2016-12-23 00:00:00</value> | ||
</records> | ||
<records prefix="plone.bundles/plone-logged-in" interface="Products.CMFPlone.interfaces.IBundleRegistry" purge="False"> | ||
<value key="last_compilation">2016-12-13 00:00:00</value> | ||
|
||
|
||
Repository: mockup | ||
Repository: plone.app.upgrade | ||
|
||
|
||
Branch: refs/heads/master | ||
Date: 2016-12-23T23:26:07-06:00 | ||
Author: Nathan Van Gheem (vangheem) <vangheem@gmail.com> | ||
Commit: https://github.com/plone/mockup/commit/c490134f978adf3ad0ea5349a50f8a3ed541add3 | ||
Date: 2016-12-24T03:09:39-06:00 | ||
Author: Johannes Raggam (thet) <thetetet@gmail.com> | ||
Commit: https://github.com/plone/plone.app.upgrade/commit/1758b0c479b36100da80c1ea700c17ad3040b456 | ||
|
||
Merge pull request #726 from plone/thet-pickadate-defaulttime | ||
Merge pull request #101 from plone/thet-newmockup | ||
|
||
PickADate default time | ||
New mockup releases for Plone 5.0 and 5.1. | ||
|
||
Files changed: | ||
A plone/app/upgrade/v50/profiles/to_507/registry.xml | ||
M CHANGES.rst | ||
M mockup/patterns/pickadate/pattern.js | ||
M mockup/tests/pattern-pickadate-test.js | ||
M plone/app/upgrade/v50/configure.zcml | ||
M plone/app/upgrade/v50/final.py | ||
M plone/app/upgrade/v50/profiles.zcml | ||
M plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
|
||
diff --git a/CHANGES.rst b/CHANGES.rst | ||
index 533a639..92e9cf9 100644 | ||
index 01577d9..b8d9491 100644 | ||
--- a/CHANGES.rst | ||
+++ b/CHANGES.rst | ||
@@ -13,6 +13,10 @@ Incompatibilities: | ||
@@ -11,6 +11,9 @@ Breaking changes: | ||
|
||
New: | ||
New features: | ||
|
||
+- PickADate pattern: Add option to automatically set the time when changing the date. | ||
+ It defaults to set the time to the current time. | ||
+- New mockup releases for Plone 5.0 and 5.1. | ||
+ [thet] | ||
+ | ||
- Change default sort option in livesearch pattern. | ||
[rodfersou] | ||
|
||
diff --git a/mockup/patterns/pickadate/pattern.js b/mockup/patterns/pickadate/pattern.js | ||
index 9002452..a067c38 100644 | ||
--- a/mockup/patterns/pickadate/pattern.js | ||
+++ b/mockup/patterns/pickadate/pattern.js | ||
@@ -3,6 +3,7 @@ | ||
* Options: | ||
* date(object): Date widget options described here. If false is selected date picker wont be shown. ({{selectYears: true, selectMonths: true }) | ||
* time(object): Time widget options described here. If false is selected time picker wont be shown. ({}) | ||
+ * autoSetTimeOnDateChange(string): Automatically set the time when a date is set. You can specify an offset with a special syntax - a stringified JSON Array in the form of "[H,M]" will set it to hour:minute. If you prepend an "+" or "-", this will added or subscracted to the current time. It does not go beyond 12:00am. ("+[0,0]"). | ||
* separator(string): Separator between date and time if both are enabled. | ||
* (' ') | ||
* classClearName(string): Class name of element that is generated by pattern. ('pattern-pickadate-clear') | ||
@@ -114,6 +115,7 @@ define([ | ||
}, | ||
time: {}, | ||
timezone: null, | ||
+ autoSetTimeOnDateChange: '+[0,0]', | ||
classWrapperName: 'pattern-pickadate-wrapper', | ||
classSeparatorName: 'pattern-pickadate-separator', | ||
classDateName: 'pattern-pickadate-date', | ||
@@ -133,14 +135,66 @@ define([ | ||
} | ||
return value; | ||
}, | ||
+ parseTimeOffset: function(timeOffset) { | ||
+ var op = undefined; | ||
+ if (timeOffset.indexOf('+') === 0) { | ||
+ op = '+'; | ||
+ timeOffset = timeOffset.split('+')[1]; | ||
+ } else if (timeOffset.indexOf('-') === 0) { | ||
+ op = '-'; | ||
+ timeOffset = timeOffset.split('-')[1]; | ||
+ } | ||
+ try { | ||
+ timeOffset = JSON.parse(timeOffset); | ||
+ } catch (e) { | ||
+ timeOffset = undefined; | ||
+ } | ||
+ if (timeOffset === false) { | ||
+ return false; | ||
+ } else if (timeOffset === true || Array.isArray(timeOffset) !== true) { | ||
+ return [0,0]; | ||
+ } | ||
+ | ||
+ var hours = parseInt(timeOffset[0], 10) || 0, | ||
+ mins = parseInt(timeOffset[1], 10) || 0; | ||
+ | ||
+ if (op === '+' || op === '-') { | ||
+ | ||
+ var offset = new Date(), | ||
+ curHours = offset.getHours(), | ||
+ curMins = offset.getMinutes(); | ||
+ | ||
+ if (op === '+') { | ||
+ hours = curHours + hours; | ||
+ if (hours > 23) { | ||
+ hours = 23; | ||
+ } | ||
+ mins = curMins + mins; | ||
+ if (mins > 59) { | ||
+ mins = 59; | ||
+ } | ||
+ } else if (op === '-') { | ||
+ hours = curHours - hours; | ||
+ if (hours < 0) { | ||
+ hours = 0; | ||
+ } | ||
+ mins = curMins - mins; | ||
+ if (mins < 0) { | ||
+ mins = 0; | ||
+ } | ||
+ } | ||
+ } | ||
+ return [hours,mins]; | ||
+ }, | ||
init: function() { | ||
var self = this, | ||
- value = self.$el.val().split(' '), | ||
- dateValue = value[0] || '', | ||
- timeValue = value[1] || ''; | ||
+ value = self.$el.val().split(' '), | ||
+ dateValue = value[0] || '', | ||
+ timeValue = value[1] || ''; | ||
|
||
self.options.date = self.isFalse(self.options.date); | ||
self.options.time = self.isFalse(self.options.time); | ||
+ self.options.autoSetTimeOnDateChange = self.parseTimeOffset(self.options.autoSetTimeOnDateChange); | ||
|
||
if (self.options.date === false) { | ||
timeValue = value[0]; | ||
@@ -168,6 +222,11 @@ define([ | ||
self.$time.attr('data-value') !== '') { | ||
self.updateValue.call(self); | ||
} | ||
+ if (self.options.autoSetTimeOnDateChange !== false && self.$time) { | ||
+ if (! self.$time.pickatime('picker').get('select')) { | ||
+ self.$time.pickatime('picker').set('select', self.options.autoSetTimeOnDateChange); | ||
+ } | ||
+ } | ||
} | ||
if (e.hasOwnProperty('clear')) { | ||
self.$el.val(''); | ||
diff --git a/mockup/tests/pattern-pickadate-test.js b/mockup/tests/pattern-pickadate-test.js | ||
index 557956d..ce7ce9d 100644 | ||
--- a/mockup/tests/pattern-pickadate-test.js | ||
+++ b/mockup/tests/pattern-pickadate-test.js | ||
@@ -1,3 +1,4 @@ | ||
+/* global define, describe, beforeEach, afterEach, it */ | ||
define([ | ||
'expect', | ||
'jquery', | ||
@@ -5,7 +6,7 @@ define([ | ||
'pat-registry', | ||
'mockup-patterns-pickadate', | ||
'mockup-patterns-select2' | ||
-], function(expect, $, sinon, registry, PickADate, Select2) { | ||
+], function(expect, $, sinon, registry, PickADate) { | ||
'use strict'; | ||
|
||
window.mocha.setup('bdd'); | ||
@@ -18,8 +19,8 @@ define([ | ||
describe('PickADate', function() { | ||
|
||
beforeEach(function() { | ||
- this.$el = $('<div><input class="pat-pickadate" /></div>'); | ||
- this.clock = sinon.useFakeTimers(); | ||
+ this.$el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "false"}\'/></div>'); | ||
+ this.clock = sinon.useFakeTimers(new Date(2016,12,23,15,30).getTime()); | ||
}); | ||
|
||
afterEach(function() { | ||
@@ -40,7 +41,7 @@ define([ | ||
expect($('.pattern-pickadate-wrapper', this.$el).size()).to.equal(1); | ||
|
||
var dateWrapper = $('.pattern-pickadate-date', self.$el).parent(), | ||
- timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
+ timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
|
||
// main element is hidden | ||
expect(self.$el.is(':hidden')).to.be.equal(true); | ||
@@ -61,7 +62,7 @@ define([ | ||
var self = this; | ||
registry.scan(self.$el); | ||
var dateWrapper = $('.pattern-pickadate-date', self.$el).parent(), | ||
- timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
+ timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
|
||
// we open date picker (calendar) | ||
$('.pattern-pickadate-date', self.$el).click(); | ||
@@ -77,7 +78,7 @@ define([ | ||
var self = this; | ||
registry.scan(self.$el); | ||
var dateWrapper = $('.pattern-pickadate-date', self.$el).parent(), | ||
- timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
+ timeWrapper = $('.pattern-pickadate-time', self.$el).parent(); | ||
|
||
// select some date | ||
$('.pattern-pickadate-date', self.$el).click(); | ||
@@ -375,18 +376,18 @@ define([ | ||
describe('PickADate with timezone', function() { | ||
it('has date, time and timezone', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
- '{"id":"Europe/Vienna","text":"Europe/Vienna"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
+ '{"id":"Europe/Vienna","text":"Europe/Vienna"}]},' + | ||
+ '"autoSetTimeOnDateChange": "false"}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input); | ||
|
||
// date and time should exist by default | ||
var $timeWrapper = $('.pattern-pickadate-time-wrapper', self.$el), | ||
- $dateWrapper = $('.pattern-pickadate-date-wrapper', self.$el); | ||
+ $dateWrapper = $('.pattern-pickadate-date-wrapper', self.$el); | ||
expect($timeWrapper.size()).to.equal(1); | ||
expect($dateWrapper.size()).to.equal(1); | ||
|
||
@@ -412,10 +413,10 @@ define([ | ||
|
||
// set date and time and check if value of main element gets timezone | ||
$('.pattern-pickadate-date', self.$el).click(); | ||
- var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ $dateWrapper.find('td > div').first().click(); | ||
expect($input.val()).to.equal(''); | ||
$('.pattern-pickadate-time', self.$el).click(); | ||
- var $selectedTime = $timeWrapper.find('li').first().next().click(); | ||
+ $timeWrapper.find('li').first().next().click(); | ||
expect($input.val()).to.equal($('input:last', $dateWrapper).val() + ' ' + $('input:last', $timeWrapper).val() + ' ' + 'Europe/Berlin'); | ||
|
||
// change timezone to second value and check if value of main element changes | ||
@@ -426,12 +427,12 @@ define([ | ||
|
||
it('should take the default timezone when it is set', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Vienna", "data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
- '{"id":"Europe/Vienna","text":"Europe/Vienna"},' + | ||
- '{"id":"Europe/Madrid","text":"Europe/Madrid"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Vienna", "data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
+ '{"id":"Europe/Vienna","text":"Europe/Vienna"},' + | ||
+ '{"id":"Europe/Madrid","text":"Europe/Madrid"}' + | ||
+ ']}}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input); | ||
@@ -444,11 +445,11 @@ define([ | ||
|
||
it('should only set the default value when it exists in the list', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Madrid", "data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
- '{"id":"Europe/Vienna","text":"Europe/Vienna"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"default": "Europe/Madrid", "data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"},' + | ||
+ '{"id":"Europe/Vienna","text":"Europe/Vienna"}' + | ||
+ ']}}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input, ['pickadate']); | ||
@@ -461,10 +462,10 @@ define([ | ||
|
||
it('should write to default and disable the dropdown field if only one value exists', function() { | ||
var self = this, | ||
- $input = $('.pat-pickadate', self.$el) | ||
- .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
- '{"id":"Europe/Berlin","text":"Europe/Berlin"}' + | ||
- ']}}' | ||
+ $input = $('.pat-pickadate', self.$el) | ||
+ .attr('data-pat-pickadate', '{"timezone": {"data": [' + | ||
+ '{"id":"Europe/Berlin","text":"Europe/Berlin"}' + | ||
+ ']}}' | ||
); | ||
self.$el.appendTo('body'); | ||
registry.scan($input, ['pickadate']); | ||
@@ -478,6 +479,121 @@ define([ | ||
expect($('.pattern-pickadate-timezone').data('select2')._enabled).to.equal(false); | ||
expect($('.select2-container-disabled').size()).to.equal(1); | ||
}); | ||
+ | ||
+ }); | ||
+ | ||
+ describe('automatically set the time on changing the date', function() { | ||
+ | ||
+ it('parseTimeOffset works as expected', function() { | ||
+ | ||
+ var pickadate = new PickADate(this.$el, {}); | ||
+ | ||
+ // test false/true | ||
+ expect(pickadate.parseTimeOffset('false')).to.be.equal(false); | ||
+ expect(pickadate.parseTimeOffset('true')).to.eql([0,0]); | ||
+ | ||
+ // test setting straight to time | ||
+ expect(pickadate.parseTimeOffset('[12, 34]')).to.eql([12,34]); | ||
+ | ||
+ // test adding / substracting | ||
+ expect(pickadate.parseTimeOffset('+[1, 10]')).to.eql([16,40]); | ||
+ expect(pickadate.parseTimeOffset('-[1, 10]')).to.eql([14,20]); | ||
+ | ||
+ // Test not exceeding dat/hour boundaries | ||
+ expect(pickadate.parseTimeOffset('+[10, 10]')).to.eql([23,40]); | ||
+ expect(pickadate.parseTimeOffset('-[16, 10]')).to.eql([0,20]); | ||
+ expect(pickadate.parseTimeOffset('+[1, 40]')).to.eql([16,59]); | ||
+ expect(pickadate.parseTimeOffset('-[1, 40]')).to.eql([14,0]); | ||
+ expect(pickadate.parseTimeOffset('+[1000, 1000]')).to.eql([23,59]); | ||
+ expect(pickadate.parseTimeOffset('-[1000, 1000]')).to.eql([0,0]); | ||
+ | ||
+ // test complete/partly nonsense | ||
+ expect(pickadate.parseTimeOffset('blabla')).to.eql([0,0]); | ||
+ expect(pickadate.parseTimeOffset('[10,20]')).to.eql([10,20]); | ||
+ expect(pickadate.parseTimeOffset('[10,"aha"]')).to.eql([10,0]); | ||
+ expect(pickadate.parseTimeOffset('["who", 20]')).to.eql([0,20]); | ||
+ | ||
+ }); | ||
+ | ||
+ it('sets the time when date is changed per default', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" />'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('15,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('15:30'); | ||
+ }); | ||
+ | ||
+ it('sets the time to a specific value when date is changed', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "[12,30]"}\'/>'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('12,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('12:30'); | ||
+ }); | ||
+ | ||
+ it('sets the time to a positive offset of the current time when date is changed', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "+[1,0]"}\'/>'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('16,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('16:30'); | ||
+ }); | ||
+ | ||
+ it('sets the time to a negative offset of the current time when date is changed', function() { | ||
+ var $el = $('<div><input class="pat-pickadate" data-pat-pickadate=\'{"autoSetTimeOnDateChange": "-[1,0]"}\'/>'); | ||
+ registry.scan($el); | ||
+ | ||
+ var $dateWrapper = $('.pattern-pickadate-date', $el).parent(); | ||
+ | ||
+ // set date and time and check if time is also set | ||
+ $('.pattern-pickadate-date', $el).click(); | ||
+ var $selectedDate = $dateWrapper.find('td > div').first().click(); | ||
+ | ||
+ // selected date should be saved on date picker element | ||
+ expect($('.pattern-pickadate-date', $el).attr('data-value')).to.be.equal($selectedDate.attr('data-pick')); | ||
+ | ||
+ // default time should be available on time picker element. | ||
+ expect($('.pattern-pickadate-time', $el).attr('data-value')).to.be.equal('14,30'); | ||
+ | ||
+ // pickadate should be have this value set. | ||
+ expect($('.pat-pickadate', $el).val()).to.contain('14:30'); | ||
+ }); | ||
|
||
}); | ||
|
||
- Remove jquery.cookie from plone-logged-in bundle's stub_js_modules. | ||
The toolbar, which has a dependency on jquery.cookie, | ||
was moved from the plone bundle to plone-logged-in in CMPlone 5.1a2. | ||
diff --git a/plone/app/upgrade/v50/configure.zcml b/plone/app/upgrade/v50/configure.zcml | ||
index 9fb12f6..af8efe0 100644 | ||
--- a/plone/app/upgrade/v50/configure.zcml | ||
+++ b/plone/app/upgrade/v50/configure.zcml | ||
@@ -327,4 +327,17 @@ | ||
|
||
</gs:upgradeSteps> | ||
|
||
+ <gs:upgradeSteps | ||
+ source="5016" | ||
+ destination="5017" | ||
+ profile="Products.CMFPlone:plone"> | ||
+ | ||
+ <gs:upgradeStep | ||
+ title="Run to507 upgrade profile." | ||
+ description="" | ||
+ handler=".final.to507" | ||
+ /> | ||
+ | ||
+ </gs:upgradeSteps> | ||
+ | ||
</configure> | ||
diff --git a/plone/app/upgrade/v50/final.py b/plone/app/upgrade/v50/final.py | ||
index 127fd32..82a3152 100644 | ||
--- a/plone/app/upgrade/v50/final.py | ||
+++ b/plone/app/upgrade/v50/final.py | ||
@@ -96,3 +96,8 @@ def to502(context): | ||
def to503(context): | ||
"""5.0.2 -> 5.0.3""" | ||
loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to503') | ||
+ | ||
+ | ||
+def to507(context): | ||
+ """5.0.6 -> 5.0.7""" | ||
+ loadMigrationProfile(context, 'profile-plone.app.upgrade.v50:to507') | ||
diff --git a/plone/app/upgrade/v50/profiles.zcml b/plone/app/upgrade/v50/profiles.zcml | ||
index 16cf6db..77ff768 100644 | ||
--- a/plone/app/upgrade/v50/profiles.zcml | ||
+++ b/plone/app/upgrade/v50/profiles.zcml | ||
@@ -111,4 +111,13 @@ | ||
provides="Products.GenericSetup.interfaces.EXTENSION" | ||
/> | ||
|
||
+ <genericsetup:registerProfile | ||
+ name="to507" | ||
+ title="Upgrade profile for Plone 5.0.6 to Plone 5.0.7" | ||
+ description="" | ||
+ directory="profiles/to_507" | ||
+ for="Products.CMFPlone.interfaces.IMigratingPloneSiteRoot" | ||
+ provides="Products.GenericSetup.interfaces.EXTENSION" | ||
+ /> | ||
+ | ||
</configure> | ||
diff --git a/plone/app/upgrade/v50/profiles/to_507/registry.xml b/plone/app/upgrade/v50/profiles/to_507/registry.xml | ||
new file mode 100644 | ||
index 0000000..ec0debb | ||
--- /dev/null | ||
+++ b/plone/app/upgrade/v50/profiles/to_507/registry.xml | ||
@@ -0,0 +1,13 @@ | ||
+<?xml version="1.0"?> | ||
+<registry> | ||
+ <records | ||
+ interface="Products.CMFPlone.interfaces.IBundleRegistry" | ||
+ prefix="plone.bundles/plone-logged-in"> | ||
+ <value key="last_compilation">2016-12-23 00:00:00</value> | ||
+ </records> | ||
+ <records | ||
+ interface="Products.CMFPlone.interfaces.IBundleRegistry" | ||
+ prefix="plone.bundles/plone"> | ||
+ <value key="last_compilation">2016-12-23 00:00:00</value> | ||
+ </records> | ||
+</registry> | ||
diff --git a/plone/app/upgrade/v51/profiles/to_beta1/registry.xml b/plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
index 9a622bd..569adc6 100644 | ||
--- a/plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
+++ b/plone/app/upgrade/v51/profiles/to_beta1/registry.xml | ||
@@ -3,7 +3,7 @@ | ||
|
||
<!-- Update ``last_compilation`` to deliver new bundles --> | ||
<records prefix="plone.bundles/plone" interface="Products.CMFPlone.interfaces.IBundleRegistry" purge="False"> | ||
- <value key="last_compilation">2016-12-13 00:00:00</value> | ||
+ <value key="last_compilation">2016-12-23 00:00:00</value> | ||
</records> | ||
<records prefix="plone.bundles/plone-logged-in" interface="Products.CMFPlone.interfaces.IBundleRegistry" purge="False"> | ||
<value key="last_compilation">2016-12-13 00:00:00</value> | ||
|
||
|