From 79f8de9653d973d6c9dfe262f14814007307f715 Mon Sep 17 00:00:00 2001 From: Dave Earley Date: Thu, 5 May 2016 16:46:52 +0100 Subject: [PATCH] Added a calendar to the organiser dashboard --- .../OrganiserDashboardController.php | 15 ++++++++ bower.json | 3 +- public/assets/stylesheet/application.css | 2 +- public/assets/stylesheet/custom.less | 34 +++++++++++++++++ .../views/ManageOrganiser/Dashboard.blade.php | 38 +++++++++++++++---- 5 files changed, 82 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/OrganiserDashboardController.php b/app/Http/Controllers/OrganiserDashboardController.php index 6851274d..b4c6e053 100644 --- a/app/Http/Controllers/OrganiserDashboardController.php +++ b/app/Http/Controllers/OrganiserDashboardController.php @@ -18,9 +18,24 @@ class OrganiserDashboardController extends MyBaseController { $organiser = Organiser::scope()->findOrFail($organiser_id); $upcoming_events = $organiser->events()->where('end_date', '>=', Carbon::now())->get(); + + /* Prepare JSON array for events for use in the dashboard calendar */ + foreach($organiser->events as $event) { + $calendar_events[] =[ + 'title' => $event->title, + 'start' => $event->start_date->toIso8601String(), + 'end' => $event->end_date->toIso8601String(), + 'url' => route('showEventDashboard', [ + 'event_id' => $event->id + ]), + 'color' => '#4E558F' + ]; + } + $data = [ 'organiser' => $organiser, 'upcoming_events' => $upcoming_events, + 'calendar_events' => json_encode($calendar_events), ]; return view('ManageOrganiser.Dashboard', $data); diff --git a/bower.json b/bower.json index 6c86ad74..1cf0a27e 100644 --- a/bower.json +++ b/bower.json @@ -27,7 +27,8 @@ "fontawesome": "~4.2.0", "simplemde": "~1.8.1", "bootstrap-touchspin": "~3.0.1", - "jquery-minicolors": "^2.2.4" + "jquery-minicolors": "^2.2.4", + "fullcalendar": "^2.7.1" }, "resolutions": { "jquery": ">=1.5", diff --git a/public/assets/stylesheet/application.css b/public/assets/stylesheet/application.css index d3926618..383ce198 100644 --- a/public/assets/stylesheet/application.css +++ b/public/assets/stylesheet/application.css @@ -475,4 +475,4 @@ body { .minicolors-theme-semanticui input { text-indent: 30px; } -.page-title .title .organiser_logo{position:absolute;height:45px;right:20px;top:5px;bottom:5px}.page-title .title .organiser_logo img{max-height:45px}.nav li.nav-button a span{padding:10px}.event.panel{margin-top:10px}.event .event-date{border:1px solid #fff;padding-bottom:9px;padding-top:7px;text-align:center;text-shadow:0 1px 1px rgba(0,0,0,0.1);width:46px;position:absolute;background-color:#ffffff;top:-13px;border-color:#404675;color:#666}.event .event-date .day{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:22px;font-weight:500;margin:-2px auto -6px auto}.event .event-date .month{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:10px;font-weight:500;margin:-2px auto 0 auto}.event .event-meta{margin:0;padding:0;margin-left:60px;height:55px;margin-top:10px;color:#ffffff}.event .event-meta li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;list-style:none;font-size:12px}.event .event-meta li a{color:#ffffff}.event .event-meta li.event-title a{font-size:16px}.event .event-meta li.event-organiser a{font-weight:bold}.event .panel-title{height:60px;padding:10px}.event .panel-title a{margin:0;height:40px;display:table-cell;vertical-align:middle;text-indent:50px}.stat-box{padding:20px;background-color:#fff;color:#2E3254;text-align:center;margin-bottom:10px;border:1px solid #e0e0e0}.stat-box h3{margin-bottom:5px;margin-top:0;font-weight:200}.stat-box span{text-transform:uppercase;font-weight:lighter;color:#aeb2d3}.top_of_page_alert{border:none;margin:0;text-align:center;border-bottom:5px solid}.v-align-text{text-align:center;position:relative;top:50%;-ms-transform:translateY(-50%);-wekbit-transform:translateY(-50%);transform:translateY(-50%)}@media (max-width:992px){.page-header>[class*=" col-"],.page-header>[class^="col-"]{margin-bottom:10px}}@media (max-width:480px){.btn-group-responsive{margin-bottom:-10px;float:none !important;display:block !important}.btn-group-responsive .btn{width:100%;padding-left:0;padding-right:0;margin-bottom:10px}.btn-group-responsive .pull-left,.btn-group-responsive .pull-right{float:none !important}}label.required::after{content:'*';color:red;padding-left:3px;font-size:9px}.hasDatepicker[disabled],.hasDatepicker[readonly],fieldset[disabled] .hasDatepicker{cursor:pointer !important;background-color:#fff !important;opacity:1}.more-options{display:none}.col-sort{color:#fff}.col-sort :hover{color:#fff}.pac-container{z-index:9999}.dtpicker-overlay{z-index:9999}.dtpicker-close{display:none}.dtpicker-header .dtpicker-title{color:#AFAFAF;text-align:center;font-size:18px;font-weight:normal}.dtpicker-header .dtpicker-value{padding:.8em .2em .2em .2em;color:#404675;text-align:center;font-size:1.4em}.dtpicker-buttonCont .dtpicker-button{background:#404675;border-radius:0}.dtpicker-content{border-radius:0}.sidebar-open-ltr body{overflow-x:hidden}.order_options .event_count{font-weight:bold;color:#777}.well{background-color:#f9f9f9;box-shadow:none}.input-group-btn select{width:115px !important;border-left:0;font-size:12px}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;background:red;cursor:inherit;display:block}input[readonly]{background-color:white !important;cursor:text !important}html.working{cursor:progress}.order_options{padding:10px 0}.minicolors-theme-default.minicolors{width:auto;display:block}.minicolors-theme-default .minicolors-input{padding-left:35px;height:auto;width:100%;display:block}.minicolors-theme-default .minicolors-swatch{top:8px;left:6px;width:18px;height:18px}.pagination>.active>span,.pagination>.active:focus>span,.pagination>.active:hover>span,.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default,.pagination>li>a:hover,.pager>li>a:hover,.pagination>li>span:hover,.pager>li>span:hover,.pagination>li>a:focus,.pager>li>a:focus,.pagination>li>span:focus,.pager>li>span:focus{color:#ffffff !important}.btn-default .caret{border-top-color:#fff}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-right:none}.modal-backdrop{background:url(../images/background.png) repeat;background-color:#2E3254} \ No newline at end of file +.page-title .title .organiser_logo{position:absolute;height:45px;right:20px;top:5px;bottom:5px}.page-title .title .organiser_logo img{max-height:45px}#calendar{border:1px solid #ddd;background:#fff}#calendar .fc-button{background:transparent;border:none;color:inherit;box-shadow:none}#calendar .fc-event{border-color:#fff;-webkit-border-radius:0;border-radius:0;padding:2px;transition:none}#calendar .fc-toolbar{text-align:center;margin-bottom:0;padding:7px}#calendar h2{font-size:15px;text-transform:uppercase;margin-top:6px}#calendar .fc-view{margin:-1px}.nav li.nav-button a span{padding:10px}.event.panel{margin-top:10px}.event .event-date{border:1px solid #fff;padding-bottom:9px;padding-top:7px;text-align:center;text-shadow:0 1px 1px rgba(0,0,0,0.1);width:46px;position:absolute;background-color:#ffffff;top:-13px;border-color:#404675;color:#666}.event .event-date .day{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:22px;font-weight:500;margin:-2px auto -6px auto}.event .event-date .month{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:10px;font-weight:500;margin:-2px auto 0 auto}.event .event-meta{margin:0;padding:0;margin-left:60px;height:55px;margin-top:10px;color:#ffffff}.event .event-meta li{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;list-style:none;font-size:12px}.event .event-meta li a{color:#ffffff}.event .event-meta li.event-title a{font-size:16px}.event .event-meta li.event-organiser a{font-weight:bold}.event .panel-title{height:60px;padding:10px}.event .panel-title a{margin:0;height:40px;display:table-cell;vertical-align:middle;text-indent:50px}.stat-box{padding:20px;background-color:#fff;color:#2E3254;text-align:center;margin-bottom:10px;border:1px solid #e0e0e0}.stat-box h3{margin-bottom:5px;margin-top:0;font-weight:200}.stat-box span{text-transform:uppercase;font-weight:lighter;color:#aeb2d3}.top_of_page_alert{border:none;margin:0;text-align:center;border-bottom:5px solid}.v-align-text{text-align:center;position:relative;top:50%;-ms-transform:translateY(-50%);-wekbit-transform:translateY(-50%);transform:translateY(-50%)}@media (max-width:992px){.page-header>[class*=" col-"],.page-header>[class^="col-"]{margin-bottom:10px}}@media (max-width:480px){.btn-group-responsive{margin-bottom:-10px;float:none !important;display:block !important}.btn-group-responsive .btn{width:100%;padding-left:0;padding-right:0;margin-bottom:10px}.btn-group-responsive .pull-left,.btn-group-responsive .pull-right{float:none !important}}label.required::after{content:'*';color:red;padding-left:3px;font-size:9px}.hasDatepicker[disabled],.hasDatepicker[readonly],fieldset[disabled] .hasDatepicker{cursor:pointer !important;background-color:#fff !important;opacity:1}.more-options{display:none}.col-sort{color:#fff}.col-sort :hover{color:#fff}.pac-container{z-index:9999}.dtpicker-overlay{z-index:9999}.dtpicker-close{display:none}.dtpicker-header .dtpicker-title{color:#AFAFAF;text-align:center;font-size:18px;font-weight:normal}.dtpicker-header .dtpicker-value{padding:.8em .2em .2em .2em;color:#404675;text-align:center;font-size:1.4em}.dtpicker-buttonCont .dtpicker-button{background:#404675;border-radius:0}.dtpicker-content{border-radius:0}.sidebar-open-ltr body{overflow-x:hidden}.order_options .event_count{font-weight:bold;color:#777}.well{background-color:#f9f9f9;box-shadow:none}.input-group-btn select{width:115px !important;border-left:0;font-size:12px}.btn-file{position:relative;overflow:hidden}.btn-file input[type=file]{position:absolute;top:0;right:0;min-width:100%;min-height:100%;font-size:100px;text-align:right;filter:alpha(opacity=0);opacity:0;background:red;cursor:inherit;display:block}input[readonly]{background-color:white !important;cursor:text !important}html.working{cursor:progress}.order_options{padding:10px 0}.minicolors-theme-default.minicolors{width:auto;display:block}.minicolors-theme-default .minicolors-input{padding-left:35px;height:auto;width:100%;display:block}.minicolors-theme-default .minicolors-swatch{top:8px;left:6px;width:18px;height:18px}.pagination>.active>span,.pagination>.active:focus>span,.pagination>.active:hover>span,.btn-default:hover,.btn-default:focus,.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default,.pagination>li>a:hover,.pager>li>a:hover,.pagination>li>span:hover,.pager>li>span:hover,.pagination>li>a:focus,.pager>li>a:focus,.pagination>li>span:focus,.pager>li>span:focus{color:#ffffff !important}.btn-default .caret{border-top-color:#fff}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-right:none}.modal-backdrop{background:url(../images/background.png) repeat;background-color:#2E3254} \ No newline at end of file diff --git a/public/assets/stylesheet/custom.less b/public/assets/stylesheet/custom.less index a2e2dc21..2df0c959 100644 --- a/public/assets/stylesheet/custom.less +++ b/public/assets/stylesheet/custom.less @@ -18,6 +18,40 @@ MANAGE ORGANISERS max-height: 45px; } +/* Dashboard calendar */ +#calendar { + border: 1px solid #ddd; + background: #fff; + /*padding: 17px;*/ +} +#calendar .fc-button { + background: transparent; + border: none; + color: inherit; + box-shadow: none; +} +#calendar .fc-event { + border-color: #fff; + -webkit-border-radius: 0; + border-radius: 0; + padding: 2px; + transition: none; +} + +#calendar .fc-toolbar { + text-align: center; + margin-bottom: 0em; + padding: 7px; +} +#calendar h2 { + font-size: 15px; + text-transform: uppercase; + margin-top: 6px; +} +#calendar .fc-view { + margin: -1px; +} + /* diff --git a/resources/views/ManageOrganiser/Dashboard.blade.php b/resources/views/ManageOrganiser/Dashboard.blade.php index 2482e408..7bf10205 100644 --- a/resources/views/ManageOrganiser/Dashboard.blade.php +++ b/resources/views/ManageOrganiser/Dashboard.blade.php @@ -22,15 +22,30 @@ - {!!HTML::script('https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places')!!} + {!! HTML::script('https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places') !!} {!! HTML::script('vendor/geocomplete/jquery.geocomplete.min.js')!!} + {!! HTML::script('vendor/moment/moment.js')!!} + {!! HTML::script('vendor/fullcalendar/dist/fullcalendar.min.js')!!} + {!! HTML::style('vendor/fullcalendar/dist/fullcalendar.css')!!} - + @stop @section('content') @@ -66,8 +81,15 @@ +
-
+ +
+ +

Event Calendar

+
+ +

Upcoming Events

@if($upcoming_events->count()) @foreach($upcoming_events as $event) @@ -81,7 +103,7 @@
@endif
-
+

Recent Orders

@if($organiser->orders->count())