diff --git a/dist/custom.css b/dist/custom.css index 8a073c9..2c55c18 100644 --- a/dist/custom.css +++ b/dist/custom.css @@ -9,6 +9,10 @@ width: 8em; height: 6em; border: 2px solid; text-align: center; position: relative; margin: 1em; float:left; background-color: white; } +.hidden { + display: none; +} + .small-box.on {background-color: #cccccc;} .small-box1 {font-family: Arial;} .small-box2 {font-family: Tahoma;} diff --git a/dist/custom.js b/dist/custom.js index c0845f6..fe97faa 100644 --- a/dist/custom.js +++ b/dist/custom.js @@ -1,5 +1,8 @@ // $ ('#mainInfoModal').on ('show.bs.modal', function (e) { $ (document).ready (function (e) { + + $('.modal.opened').modal('show'); + $ ('#map').locationpicker ({ location: {latitude: 49.8712825, longitude: 16.3073431}, radius: 10, @@ -16,34 +19,78 @@ $ (document).ready (function (e) { }); $ ('.js-move-button-trigger').click (function () { + $('.btn-toolbar .btn').hide(); + $ ('.js-move-done-button-trigger').show(); + $ ('.js-move-button').show (); - $ ('.gallery__buttons').show (); - $ (this).attr ('hidden', true); - $ ('.js-move-done-button-trigger').attr ('hidden', false); + $ ('.gallery__buttons').addClass('sort-handle').show (); + }); $ ('.js-move-done-button-trigger').click (function () { - $ ('.js-move-button').hide (); - $ ('.gallery__buttons').hide (); + $ ('.gallery__buttons, .gallery__buttons__item').hide (); + $('.gallery__buttons').removeClass('sort-handle'); + $ ('.btn-toolbar .btn').show(); + $ ('.btn-toolbar .btn.hidden').hide(); - $ (this).attr ('hidden', true); - $ ('.js-move-button-trigger').attr ('hidden', false); + $ ('.js-move-button-trigger').show(); }); + $ ('.js-delete-button-trigger').click (function () { - $ ('.js-delete-checkbox').show (); - $ ('.gallery__buttons').show (); + $('.btn-toolbar .btn').hide(); - $ (this).attr ('hidden', true); - $ ('.js-delete-button-confirmation').attr ('hidden', false); + toggleDeleteConfirmButton(); + + $ ('.js-delete-checkbox').show (); + $ ('.gallery__buttons').addClass('js-delete-overlay').show (); }); +function toggleDeleteConfirmButton() { + + $('.js-delete-button-cancel').show(); + + if ($('.js-delete-checkbox:checked').length > 0) { + $ ('.js-delete-button-confirmation').show(); + } else { + $ ('.js-delete-button-confirmation').hide(); + } +} + +$('.js-delete-checkbox').change(function () { + toggleDeleteConfirmButton(); +}); + + + + + + + + + + +// potvrzeni smazani v modalu $ ('.js-delete-button-confirmation-trigger').click (function () { $ ('.js-delete-checkbox:checked').closest ('.gallery__item').fadeOut ('fast'); - $ ('.gallery__buttons').hide (); - $ ('.js-delete-button-confirmation').attr ('hidden', true); - $ ('.js-delete-button-trigger').attr ('hidden', false); + $ ('.gallery__buttons, .gallery__buttons__item').hide (); + $ ('.gallery__buttons').removeClass('js-delete-overlay'); + + $('.js-delete-button-cancel').hide(); + + $ ('.btn-toolbar .btn').show(); + $ ('.btn-toolbar .btn.hidden').hide(); + +}); + +$('.js-delete-button-cancel').click(function () { + $ ('.gallery__buttons, .gallery__buttons__item').hide (); + $ ('.gallery__buttons').removeClass('js-delete-overlay'); + + + $ ('.btn-toolbar .btn').show(); + $ ('.btn-toolbar .btn.hidden').hide(); }); $ (function () { @@ -68,3 +115,5 @@ $ (function () { $ (this).toggleClass ('on'); }) }); + + diff --git a/src/app.js b/src/app.js index ff2c15f..eada60d 100644 --- a/src/app.js +++ b/src/app.js @@ -49,10 +49,11 @@ var templateData = { aboutUs: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", notes: "", wedding: { - when: '1. 9. 2019', + when: '1. 9. 2019 11:00', where: 'Zámek Litomyšl', - at: '11:00' }, + partner1: "Adam", + partner2: "Eva", ourStory: "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", program: [ { @@ -80,7 +81,8 @@ var templateData = { time: "12:00", title: "Krájení dortu" } - ] + ], + albumsCount: 0, }; /** @@ -144,6 +146,18 @@ app.post ('/:page?', function (req, res) { res.redirect (redirectUrl) }); +app.post('/editor/album', function (req, res) { + templateData.albumsCount ++; + + var redirectUrl = '/editor/gallery_detail'; + + if (typeof req.body.redirectParams !== 'undefined') { + redirectUrl += '?'+req.body.redirectParams; + } + + res.redirect (redirectUrl) +}); + app.post ('/editor/:page?', function (req, res) { savePost (req, res); diff --git a/src/assets/js/datepicker.js b/src/assets/js/datepicker.js index 670dd93..dbdcafe 100644 --- a/src/assets/js/datepicker.js +++ b/src/assets/js/datepicker.js @@ -3,6 +3,132 @@ $ (document).ready (function () { }); +/* + * Date Format 1.2.3 + * (c) 2007-2009 Steven Levithan + * MIT license + * + * Includes enhancements by Scott Trenda + * and Kris Kowal + * + * Accepts a date, a mask, or a date and a mask. + * Returns a formatted version of the given date. + * The date defaults to the current date/time. + * The mask defaults to dateFormat.masks.default. + */ + +var dateFormat = function () { + var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, + timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, + timezoneClip = /[^-+\dA-Z]/g, + pad = function (val, len) { + val = String(val); + len = len || 2; + while (val.length < len) val = "0" + val; + return val; + }; + + // Regexes and supporting functions are cached through closure + return function (date, mask, utc) { + var dF = dateFormat; + + // You can't provide utc if you skip other args (use the "UTC:" mask prefix) + if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { + mask = date; + date = undefined; + } + + // Passing date through Date applies Date.parse, if necessary + date = date ? new Date(date) : new Date; + if (isNaN(date)) throw SyntaxError("invalid date"); + + mask = String(dF.masks[mask] || mask || dF.masks["default"]); + + // Allow setting the utc argument via the mask + if (mask.slice(0, 4) == "UTC:") { + mask = mask.slice(4); + utc = true; + } + + var _ = utc ? "getUTC" : "get", + d = date[_ + "Date"](), + D = date[_ + "Day"](), + m = date[_ + "Month"](), + y = date[_ + "FullYear"](), + H = date[_ + "Hours"](), + M = date[_ + "Minutes"](), + s = date[_ + "Seconds"](), + L = date[_ + "Milliseconds"](), + o = utc ? 0 : date.getTimezoneOffset(), + flags = { + d: d, + dd: pad(d), + ddd: dF.i18n.dayNames[D], + dddd: dF.i18n.dayNames[D + 7], + m: m + 1, + mm: pad(m + 1), + mmm: dF.i18n.monthNames[m], + mmmm: dF.i18n.monthNames[m + 12], + yy: String(y).slice(2), + yyyy: y, + h: H % 12 || 12, + hh: pad(H % 12 || 12), + H: H, + HH: pad(H), + M: M, + MM: pad(M), + s: s, + ss: pad(s), + l: pad(L, 3), + L: pad(L > 99 ? Math.round(L / 10) : L), + t: H < 12 ? "a" : "p", + tt: H < 12 ? "am" : "pm", + T: H < 12 ? "A" : "P", + TT: H < 12 ? "AM" : "PM", + Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), + o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), + S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] + }; + + return mask.replace(token, function ($0) { + return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1); + }); + }; +}(); + +// Some common format strings +dateFormat.masks = { + "default": "ddd mmm dd yyyy HH:MM:ss", + shortDate: "m/d/yy", + mediumDate: "mmm d, yyyy", + longDate: "mmmm d, yyyy", + fullDate: "dddd, mmmm d, yyyy", + shortTime: "h:MM TT", + mediumTime: "h:MM:ss TT", + longTime: "h:MM:ss TT Z", + isoDate: "yyyy-mm-dd", + isoTime: "HH:MM:ss", + isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", + isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" +}; + +// Internationalization strings +dateFormat.i18n = { + dayNames: [ + "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", + "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" + ], + monthNames: [ + "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", + "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" + ] +}; + +// For convenience... +Date.prototype.format = function (mask, utc) { + return dateFormat(this, mask, utc); +}; + function initDatePickers() { $ ('.select-time').datetimepicker ({ format: 'LT', @@ -14,4 +140,10 @@ function initDatePickers() { locale: 'cs', minDate: new Date () }); + + $ ('.select-datetime').datetimepicker ({ + format: 'D. M. Y LT', + locale: 'cs', + minDate: new Date () + }); } \ No newline at end of file diff --git a/src/assets/js/program.js b/src/assets/js/program.js index 5837479..ebb96e0 100644 --- a/src/assets/js/program.js +++ b/src/assets/js/program.js @@ -10,7 +10,7 @@ $ (document).on ('click', '.js-add-program', function () { var name = $ (this).attr ('name'); if (typeof name !== 'undefined') - $ (this).attr ('name', name.replace (/\[0\]/g, '[' + itemsCount + ']')); + $ (this).attr ('name', name.replace (/\[[0-9]+\]/g, '[' + itemsCount + ']')); }); $copy.removeAttr ('hidden').appendTo ($templateContainer); diff --git a/src/assets/scss/backToDashboard.scss b/src/assets/scss/backToDashboard.scss index 122f171..217d7e6 100644 --- a/src/assets/scss/backToDashboard.scss +++ b/src/assets/scss/backToDashboard.scss @@ -9,7 +9,7 @@ bottom: 10px; left: 10px; - border-radius: 50%; + border-radius: 8px; padding: 5px 10px; background: white; border: solid 1px; diff --git a/src/assets/scss/editor/gallery.scss b/src/assets/scss/editor/gallery.scss index 6c51adb..6ef9d0f 100644 --- a/src/assets/scss/editor/gallery.scss +++ b/src/assets/scss/editor/gallery.scss @@ -44,7 +44,8 @@ top: 0; left: 0; right: 0; - background: rgba(0, 0, 0, 0.5); + bottom: 0; + background: rgba(0, 0, 0, 0.1); padding: 5px; color: white; diff --git a/src/assets/scss/editor/parts.scss b/src/assets/scss/editor/parts.scss index 4a21266..2122c5b 100644 --- a/src/assets/scss/editor/parts.scss +++ b/src/assets/scss/editor/parts.scss @@ -8,5 +8,16 @@ top: 10px; right: 10px; font-size: 200%; + opacity: 0.1; + transition: opacity 0.5s ease-in-out; + } + + &:hover { + outline: dotted 1px; + + .web-part__edit { + opacity: 1; + transition: opacity 0.5s ease-in-out; + } } } \ No newline at end of file diff --git a/src/assets/scss/editor/timeline.scss b/src/assets/scss/editor/timeline.scss index 412ba19..1ecd7ba 100644 --- a/src/assets/scss/editor/timeline.scss +++ b/src/assets/scss/editor/timeline.scss @@ -29,27 +29,27 @@ position: relative; } -.timeline::before { - border: solid 1px; - position: absolute; - top: 100px; - content: " "; - width: 100%; -} +//.timeline::before { +// border: solid 1px; +// position: absolute; +// top: 100px; +// content: " "; +// width: 100%; +//} -.timeline .timeline__icon::after { - font: normal normal normal 14px/1 FontAwesome; - content: "\F111"; - position: absolute; - z-index: -1; - width: 100%; - bottom: -30px; - left: 0; - font-size: 20px; -} +//.timeline .timeline__icon::after { +// font: normal normal normal 14px/1 FontAwesome; +// content: "\F111"; +// position: absolute; +// z-index: -1; +// width: 100%; +// bottom: -30px; +// left: 0; +// font-size: 20px; +//} .timeline .timeline__content { - margin-top: 30px; + margin-top: 10px; } .timeline .timeline__content h3 { diff --git a/src/views/backend/budget.ejs b/src/views/backend/budget.ejs index 5deda76..c2c7726 100644 --- a/src/views/backend/budget.ejs +++ b/src/views/backend/budget.ejs @@ -1,15 +1,12 @@ <%- include('../partials/notification.ejs', {parameter: "newGroup", notifiactionText: "Skupina úspěšně vytvořena."})%> diff --git a/src/views/backend/calendar.ejs b/src/views/backend/calendar.ejs index b6ffd95..1b765b1 100644 --- a/src/views/backend/calendar.ejs +++ b/src/views/backend/calendar.ejs @@ -7,4 +7,6 @@ \ No newline at end of file + + +<% include ../partials/backend/modals/notImplemented.ejs %> diff --git a/src/views/backend/details.ejs b/src/views/backend/details.ejs index 0c3aacb..51f9321 100644 --- a/src/views/backend/details.ejs +++ b/src/views/backend/details.ejs @@ -1,21 +1,22 @@ - -
-

Kdo?

+
+ -
-
+

Kdo?

- - +
+
-
-
- - -
-
+ + -<% include ../partials/weddingInfo.ejs %> +
+
+ + +
+
+ <% include ../partials/weddingInfo.ejs %> +
\ No newline at end of file diff --git a/src/views/backend/guests.ejs b/src/views/backend/guests.ejs index fc85b8b..b8310d9 100644 --- a/src/views/backend/guests.ejs +++ b/src/views/backend/guests.ejs @@ -170,4 +170,6 @@ - \ No newline at end of file + + +<% include ../partials/backend/modals/notImplemented.ejs %> diff --git a/src/views/editor/gallery.ejs b/src/views/editor/gallery.ejs index e30a520..6034172 100644 --- a/src/views/editor/gallery.ejs +++ b/src/views/editor/gallery.ejs @@ -14,28 +14,7 @@ - - - <% include ../partials/editor/modals/newGallery.ejs %> - <% include ../partials/editor/modals/uploadPhoto.ejs %> + <% include ../partials/editor/album.ejs %> \ No newline at end of file diff --git a/src/views/editor/gallery_detail.ejs b/src/views/editor/gallery_detail.ejs index 3c1de4a..17cb5c6 100644 --- a/src/views/editor/gallery_detail.ejs +++ b/src/views/editor/gallery_detail.ejs @@ -14,7 +14,7 @@ Přesunout fotografie - @@ -22,11 +22,14 @@ Nahrát fotografie + + + - @@ -43,10 +46,10 @@ diff --git a/src/views/partials/editor/modals/newGallery.ejs b/src/views/partials/editor/modals/newGallery.ejs index c1ae1c8..acf2b6a 100644 --- a/src/views/partials/editor/modals/newGallery.ejs +++ b/src/views/partials/editor/modals/newGallery.ejs @@ -7,8 +7,8 @@ -
- + +