From 4bbb3a53471aebc2939ccf5d68bfb5222429fd87 Mon Sep 17 00:00:00 2001 From: Llewellyn van der Merwe Date: Thu, 26 May 2016 09:48:18 +0100 Subject: [PATCH] Added new jPlayer #17 --- README.md | 18 +- admin/assets/css/admin.css | 2 +- admin/assets/css/dashboard.css | 2 +- admin/assets/css/help_document.css | 2 +- admin/assets/css/help_documents.css | 2 +- admin/assets/css/preacher.css | 2 +- admin/assets/css/preachers.css | 2 +- admin/assets/css/series.css | 2 +- admin/assets/css/series_list.css | 2 +- admin/assets/css/sermon.css | 2 +- admin/assets/css/sermons.css | 2 +- admin/assets/css/statistic.css | 2 +- admin/assets/css/statistics.css | 2 +- admin/config.xml | 30 +- admin/controller.php | 2 +- admin/controllers/ajax.json.php | 2 +- admin/controllers/help.php | 2 +- admin/controllers/help_document.php | 22 +- admin/controllers/help_documents.php | 32 +- admin/controllers/import.php | 2 +- admin/controllers/preacher.php | 22 +- admin/controllers/preachers.php | 32 +- admin/controllers/series.php | 22 +- admin/controllers/series_list.php | 32 +- admin/controllers/sermon.php | 28 +- admin/controllers/sermondistributor.php | 2 +- admin/controllers/sermons.php | 32 +- admin/controllers/statistic.php | 22 +- admin/controllers/statistics.php | 32 +- .../PHPExcel/Reader/ChunkReadFilter.php | 49 + admin/helpers/html/batch_.php | 2 +- admin/helpers/sermondistributor.php | 109 +- .../en-GB/en-GB.com_sermondistributor.ini | 12 + .../en-GB/en-GB.com_sermondistributor.sys.ini | 2 +- admin/layouts/batchselection.php | 2 +- admin/layouts/help_document/details_above.php | 2 +- .../help_document/details_fullwidth.php | 2 +- admin/layouts/help_document/details_left.php | 2 +- admin/layouts/help_document/details_right.php | 2 +- admin/layouts/help_document/details_under.php | 2 +- admin/layouts/help_document/metadata.php | 2 +- admin/layouts/help_document/publishing.php | 2 +- admin/layouts/preacher/details_above.php | 2 +- admin/layouts/preacher/details_fullwidth.php | 2 +- admin/layouts/preacher/details_left.php | 2 +- admin/layouts/preacher/details_right.php | 2 +- admin/layouts/preacher/metadata.php | 2 +- admin/layouts/preacher/publishing.php | 2 +- admin/layouts/preacher/sermons_fullwidth.php | 2 +- admin/layouts/series/details_above.php | 2 +- admin/layouts/series/details_fullwidth.php | 2 +- admin/layouts/series/details_left.php | 2 +- admin/layouts/series/details_right.php | 2 +- admin/layouts/series/metadata.php | 2 +- admin/layouts/series/publishing.php | 2 +- admin/layouts/series/sermons_fullwidth.php | 2 +- admin/layouts/sermon/details_above.php | 2 +- admin/layouts/sermon/details_fullwidth.php | 2 +- admin/layouts/sermon/details_left.php | 2 +- admin/layouts/sermon/details_right.php | 2 +- admin/layouts/sermon/details_under.php | 2 +- admin/layouts/sermon/files_fullwidth.php | 2 +- admin/layouts/sermon/metadata.php | 2 +- admin/layouts/sermon/publishing.php | 2 +- admin/layouts/sermon/stastics_fullwidth.php | 2 +- admin/layouts/statistic/details_above.php | 2 +- admin/layouts/statistic/details_left.php | 2 +- admin/layouts/statistic/details_right.php | 2 +- admin/layouts/statistic/metadata.php | 2 +- admin/layouts/statistic/publishing.php | 2 +- admin/models/ajax.php | 4 +- admin/models/fields/articles.php | 98 +- admin/models/fields/dropboxfiles.php | 98 +- admin/models/fields/localfiles.php | 98 +- admin/models/fields/preachers.php | 98 +- admin/models/fields/series.php | 98 +- admin/models/fields/sermon.php | 98 +- admin/models/forms/help_document.js | 20 +- admin/models/forms/help_document.xml | 8 +- admin/models/forms/preacher.js | 2 +- admin/models/forms/preacher.xml | 8 +- admin/models/forms/series.js | 2 +- admin/models/forms/series.xml | 8 +- admin/models/forms/sermon.js | 36 +- admin/models/forms/sermon.xml | 8 +- admin/models/forms/statistic.js | 2 +- admin/models/forms/statistic.xml | 6 +- admin/models/help_document.php | 140 +- admin/models/help_documents.php | 100 +- admin/models/import.php | 4 +- admin/models/preacher.php | 168 +- admin/models/preachers.php | 76 +- admin/models/series.php | 168 +- admin/models/series_list.php | 76 +- admin/models/sermon.php | 190 +- admin/models/sermondistributor.php | 4 +- admin/models/sermons.php | 104 +- admin/models/statistic.php | 122 +- admin/models/statistics.php | 88 +- admin/sermondistributor.php | 4 +- admin/tables/help_document.php | 4 +- admin/tables/preacher.php | 4 +- admin/tables/series.php | 4 +- admin/tables/sermon.php | 6 +- admin/tables/statistic.php | 4 +- admin/views/help_document/submitbutton.js | 2 +- admin/views/help_document/tmpl/edit.php | 2 +- admin/views/help_document/view.html.php | 24 +- admin/views/help_documents/tmpl/default.php | 2 +- .../tmpl/default_batch_body.php | 2 +- .../tmpl/default_batch_footer.php | 2 +- .../help_documents/tmpl/default_body.php | 2 +- .../help_documents/tmpl/default_foot.php | 2 +- .../help_documents/tmpl/default_head.php | 2 +- .../help_documents/tmpl/default_toolbar.php | 2 +- admin/views/help_documents/view.html.php | 74 +- admin/views/import/tmpl/default.php | 205 +- admin/views/import/view.html.php | 2 +- admin/views/preacher/submitbutton.js | 2 +- admin/views/preacher/tmpl/edit.php | 2 +- admin/views/preacher/view.html.php | 34 +- admin/views/preachers/tmpl/default.php | 2 +- .../preachers/tmpl/default_batch_body.php | 2 +- .../preachers/tmpl/default_batch_footer.php | 2 +- admin/views/preachers/tmpl/default_body.php | 2 +- admin/views/preachers/tmpl/default_foot.php | 2 +- admin/views/preachers/tmpl/default_head.php | 2 +- .../views/preachers/tmpl/default_toolbar.php | 2 +- admin/views/preachers/view.html.php | 2 +- admin/views/series/submitbutton.js | 2 +- admin/views/series/tmpl/edit.php | 2 +- admin/views/series/view.html.php | 34 +- admin/views/series_list/tmpl/default.php | 2 +- .../series_list/tmpl/default_batch_body.php | 2 +- .../series_list/tmpl/default_batch_footer.php | 2 +- admin/views/series_list/tmpl/default_body.php | 2 +- admin/views/series_list/tmpl/default_foot.php | 2 +- admin/views/series_list/tmpl/default_head.php | 2 +- .../series_list/tmpl/default_toolbar.php | 2 +- admin/views/series_list/view.html.php | 2 +- admin/views/sermon/submitbutton.js | 2 +- admin/views/sermon/tmpl/edit.php | 2 +- admin/views/sermon/view.html.php | 34 +- .../views/sermondistributor/tmpl/default.php | 2 +- .../sermondistributor/tmpl/default_main.php | 26 +- .../sermondistributor/tmpl/default_vdm.php | 2 +- admin/views/sermondistributor/view.html.php | 2 +- admin/views/sermons/tmpl/default.php | 2 +- .../views/sermons/tmpl/default_batch_body.php | 2 +- .../sermons/tmpl/default_batch_footer.php | 2 +- admin/views/sermons/tmpl/default_body.php | 2 +- admin/views/sermons/tmpl/default_foot.php | 2 +- admin/views/sermons/tmpl/default_head.php | 2 +- admin/views/sermons/tmpl/default_toolbar.php | 2 +- admin/views/sermons/view.html.php | 58 +- admin/views/statistic/submitbutton.js | 2 +- admin/views/statistic/tmpl/edit.php | 2 +- admin/views/statistic/view.html.php | 24 +- admin/views/statistics/tmpl/default.php | 2 +- .../statistics/tmpl/default_batch_body.php | 2 +- .../statistics/tmpl/default_batch_footer.php | 2 +- admin/views/statistics/tmpl/default_body.php | 2 +- admin/views/statistics/tmpl/default_foot.php | 2 +- admin/views/statistics/tmpl/default_head.php | 2 +- .../views/statistics/tmpl/default_toolbar.php | 2 +- admin/views/statistics/view.html.php | 20 +- media/jplayer/add-on/jplayer.playlist.js | 496 +++ media/jplayer/add-on/jplayer.playlist.min.js | 2 + .../add-on/jquery.jplayer.inspector.js | 338 ++ .../add-on/jquery.jplayer.inspector.min.js | 2 + media/jplayer/jplayer/jquery.jplayer.js | 3506 +++++++++++++++++ media/jplayer/jplayer/jquery.jplayer.min.js | 3 + media/jplayer/jplayer/jquery.jplayer.swf | Bin 0 -> 13714 bytes media/jplayer/popcorn/popcorn.jplayer.js | 579 +++ media/jplayer/popcorn/popcorn.jplayer.min.js | 2 + .../blue.monday/css/jplayer.blue.monday.css | 551 +++ .../css/jplayer.blue.monday.min.css | 1 + .../blue.monday/image/jplayer.blue.monday.jpg | Bin 0 -> 23189 bytes .../image/jplayer.blue.monday.seeking.gif | Bin 0 -> 3284 bytes .../image/jplayer.blue.monday.video.play.png | Bin 0 -> 17692 bytes .../jplayer.blue.monday.audio.playlist.html | 42 + .../jplayer.blue.monday.audio.single.html | 37 + .../jplayer.blue.monday.audio.stream.html | 24 + .../jplayer.blue.monday.video.playlist.html | 52 + .../jplayer.blue.monday.video.single.html | 43 + .../skin/pink.flag/css/jplayer.pink.flag.css | 572 +++ .../pink.flag/css/jplayer.pink.flag.min.css | 1 + .../pink.flag/image/jplayer.pink.flag.jpg | Bin 0 -> 18426 bytes .../image/jplayer.pink.flag.seeking.gif | Bin 0 -> 3284 bytes .../image/jplayer.pink.flag.video.play.png | Bin 0 -> 17692 bytes .../jplayer.pink.flag.audio.playlist.html | 42 + .../jplayer.pink.flag.audio.single.html | 37 + .../jplayer.pink.flag.audio.stream.html | 24 + .../jplayer.pink.flag.video.playlist.html | 52 + .../jplayer.pink.flag.video.single.html | 43 + script.php | 386 +- sermondistributor.xml | 3 +- site/assets/css/categories.css | 2 +- site/assets/css/category.css | 2 +- site/assets/css/preacher.css | 2 +- site/assets/css/preachers.css | 2 +- site/assets/css/series.css | 2 +- site/assets/css/serieslist.css | 2 +- site/assets/css/sermon.css | 2 +- site/assets/css/site.css | 2 +- site/controller.php | 2 +- site/controllers/ajax.json.php | 2 +- site/controllers/download.php | 2 +- site/controllers/help.php | 2 +- site/helpers/dropboxupdater.php | 2 +- site/helpers/headercheck.php | 2 +- site/helpers/route.php | 58 +- site/helpers/sermondistributor.php | 75 +- .../en-GB/en-GB.com_sermondistributor.ini | 14 + site/layouts/addtodropboxbutton.php | 2 +- site/layouts/addtodropboxicon.php | 2 +- site/layouts/categorieslistitem.php | 2 +- site/layouts/categoriespanel.php | 2 +- site/layouts/categoriesrow.php | 2 +- site/layouts/downloadsermonbutton.php | 2 +- site/layouts/isnew.php | 2 +- site/layouts/jplayerbluemonday.php | 94 + site/layouts/jplayerbluemondaylist.php | 97 + site/layouts/mediaplayer.php | 53 +- site/layouts/opensermonbutton.php | 2 +- site/layouts/preacherslistitem.php | 2 +- site/layouts/preacherspanel.php | 2 +- site/layouts/preachersrow.php | 2 +- site/layouts/serieslistitem.php | 2 +- site/layouts/seriespanel.php | 2 +- site/layouts/seriesrow.php | 2 +- site/layouts/sermonslistitem.php | 2 +- site/layouts/sermonspanel.php | 2 +- site/layouts/sermonsrow.php | 2 +- ...oplayer.php => soundmanagerthreesixty.php} | 4 +- site/models/ajax.php | 4 +- site/models/categories.php | 26 +- site/models/category.php | 82 +- site/models/preacher.php | 96 +- site/models/preachers.php | 30 +- site/models/series.php | 96 +- site/models/serieslist.php | 30 +- site/models/sermon.php | 44 +- site/router.php | 2 +- site/sermondistributor.php | 4 +- site/views/categories/tmpl/default.php | 2 +- site/views/categories/tmpl/default.xml | 16 +- .../tmpl/default_categories-grid.php | 2 +- .../tmpl/default_categories-list.php | 2 +- .../tmpl/default_categories-table.php | 2 +- site/views/categories/view.html.php | 58 +- site/views/category/tmpl/default.php | 2 +- site/views/category/tmpl/default.xml | 40 +- .../category/tmpl/default_categorybox.php | 2 +- .../category/tmpl/default_categorypanel.php | 2 +- .../category/tmpl/default_categorysmall.php | 2 +- .../category/tmpl/default_sermons-grid.php | 2 +- .../category/tmpl/default_sermons-list.php | 2 +- .../category/tmpl/default_sermons-table.php | 2 +- site/views/category/view.html.php | 64 +- site/views/preacher/tmpl/default.php | 2 +- site/views/preacher/tmpl/default.xml | 44 +- .../preacher/tmpl/default_preacherbox.php | 2 +- .../preacher/tmpl/default_preacherpanel.php | 2 +- .../preacher/tmpl/default_preachersmall.php | 2 +- .../preacher/tmpl/default_sermons-grid.php | 2 +- .../preacher/tmpl/default_sermons-list.php | 2 +- .../preacher/tmpl/default_sermons-table.php | 2 +- site/views/preacher/view.html.php | 64 +- site/views/preachers/tmpl/default.php | 2 +- site/views/preachers/tmpl/default.xml | 20 +- .../preachers/tmpl/default_preachers-grid.php | 2 +- .../preachers/tmpl/default_preachers-list.php | 2 +- .../tmpl/default_preachers-table.php | 2 +- site/views/preachers/view.html.php | 60 +- site/views/series/tmpl/default.php | 2 +- site/views/series/tmpl/default.xml | 40 +- site/views/series/tmpl/default_seriesbox.php | 2 +- .../views/series/tmpl/default_seriespanel.php | 2 +- .../views/series/tmpl/default_seriessmall.php | 2 +- .../series/tmpl/default_sermons-grid.php | 2 +- .../series/tmpl/default_sermons-list.php | 2 +- .../series/tmpl/default_sermons-table.php | 2 +- site/views/series/view.html.php | 64 +- site/views/serieslist/tmpl/default.php | 2 +- site/views/serieslist/tmpl/default.xml | 16 +- .../serieslist/tmpl/default_series-grid.php | 2 +- .../serieslist/tmpl/default_series-list.php | 2 +- .../serieslist/tmpl/default_series-table.php | 2 +- site/views/serieslist/view.html.php | 60 +- site/views/sermon/tmpl/default.php | 18 +- site/views/sermon/tmpl/default_sermonbig.php | 9 +- site/views/sermon/tmpl/default_sermonbox.php | 9 +- .../views/sermon/tmpl/default_sermonpanel.php | 7 +- site/views/sermon/view.html.php | 90 +- 295 files changed, 9391 insertions(+), 2260 deletions(-) create mode 100644 admin/helpers/PHPExcel/Reader/ChunkReadFilter.php create mode 100644 media/jplayer/add-on/jplayer.playlist.js create mode 100644 media/jplayer/add-on/jplayer.playlist.min.js create mode 100644 media/jplayer/add-on/jquery.jplayer.inspector.js create mode 100644 media/jplayer/add-on/jquery.jplayer.inspector.min.js create mode 100644 media/jplayer/jplayer/jquery.jplayer.js create mode 100644 media/jplayer/jplayer/jquery.jplayer.min.js create mode 100644 media/jplayer/jplayer/jquery.jplayer.swf create mode 100644 media/jplayer/popcorn/popcorn.jplayer.js create mode 100644 media/jplayer/popcorn/popcorn.jplayer.min.js create mode 100644 media/jplayer/skin/blue.monday/css/jplayer.blue.monday.css create mode 100644 media/jplayer/skin/blue.monday/css/jplayer.blue.monday.min.css create mode 100644 media/jplayer/skin/blue.monday/image/jplayer.blue.monday.jpg create mode 100644 media/jplayer/skin/blue.monday/image/jplayer.blue.monday.seeking.gif create mode 100644 media/jplayer/skin/blue.monday/image/jplayer.blue.monday.video.play.png create mode 100644 media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html create mode 100644 media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html create mode 100644 media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html create mode 100644 media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html create mode 100644 media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html create mode 100644 media/jplayer/skin/pink.flag/css/jplayer.pink.flag.css create mode 100644 media/jplayer/skin/pink.flag/css/jplayer.pink.flag.min.css create mode 100644 media/jplayer/skin/pink.flag/image/jplayer.pink.flag.jpg create mode 100644 media/jplayer/skin/pink.flag/image/jplayer.pink.flag.seeking.gif create mode 100644 media/jplayer/skin/pink.flag/image/jplayer.pink.flag.video.play.png create mode 100644 media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html create mode 100644 media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html create mode 100644 media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html create mode 100644 media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html create mode 100644 media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html create mode 100644 site/layouts/jplayerbluemonday.php create mode 100644 site/layouts/jplayerbluemondaylist.php rename site/layouts/{audioplayer.php => soundmanagerthreesixty.php} (95%) diff --git a/README.md b/README.md index b4a9b97a..63016499 100644 --- a/README.md +++ b/README.md @@ -23,32 +23,32 @@ The best way to see all your options is to install this component on you Joomla + *Author*: [Llewellyn van der Merwe] (mailto:llewellyn@vdm.io) + *Name*: [Sermon Distributor] (https://www.vdm.io/) + *First Build*: 22nd October, 2015 -+ *Last Build*: 11th April, 2016 ++ *Last Build*: 26th May, 2016 + *Version*: 1.3.2 + *Copyright*: Copyright (C) 2015. All Rights Reserved + *License*: GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html ## Build Time :hourglass: -**135 Hours** or **17 Eight Hour Days** (actual time the author saved - +**136 Hours** or **17 Eight Hour Days** (actual time the author saved - due to [Automated Component Builder] (https://www.vdm.io/joomla-component-builder)) > (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**, > never making one mistake or taking any coffee break.) -+ *Line count*: **48233** -+ *File count*: **352** -+ *Folder count*: **79** ++ *Line count*: **48865** ++ *File count*: **354** ++ *Folder count*: **80** -**88 Hours** or **11 Eight Hour Days** (the actual time the author spent) +**90 Hours** or **11 Eight Hour Days** (the actual time the author spent) > (with the following break down: > **debugging @34hours** = codingtime / 4; > **planning @19hours** = codingtime / 7; -> **mapping @13hours** = codingtime / 10; -> **office @22hours** = codingtime / 6;) +> **mapping @14hours** = codingtime / 10; +> **office @23hours** = codingtime / 6;) -**223 Hours** or **28 Eight Hour Days** +**226 Hours** or **28 Eight Hour Days** (a total of the realistic time frame for this project) > (if creating a folder and file took **5 seconds** and writing one line of code took **10 seconds**, diff --git a/admin/assets/css/admin.css b/admin/assets/css/admin.css index 2abd288d..44e1d1b9 100644 --- a/admin/assets/css/admin.css +++ b/admin/assets/css/admin.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage admin.css diff --git a/admin/assets/css/dashboard.css b/admin/assets/css/dashboard.css index 38a29da7..206f3853 100644 --- a/admin/assets/css/dashboard.css +++ b/admin/assets/css/dashboard.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage dashboard.css diff --git a/admin/assets/css/help_document.css b/admin/assets/css/help_document.css index 2d398ada..483a0e42 100644 --- a/admin/assets/css/help_document.css +++ b/admin/assets/css/help_document.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help_document.css diff --git a/admin/assets/css/help_documents.css b/admin/assets/css/help_documents.css index d68a3a65..9c59543c 100644 --- a/admin/assets/css/help_documents.css +++ b/admin/assets/css/help_documents.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help_documents.css diff --git a/admin/assets/css/preacher.css b/admin/assets/css/preacher.css index bcc9b3cb..98ad8752 100644 --- a/admin/assets/css/preacher.css +++ b/admin/assets/css/preacher.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacher.css diff --git a/admin/assets/css/preachers.css b/admin/assets/css/preachers.css index 4c1d3ae0..8b3fe9d6 100644 --- a/admin/assets/css/preachers.css +++ b/admin/assets/css/preachers.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preachers.css diff --git a/admin/assets/css/series.css b/admin/assets/css/series.css index 22db7d8d..ea43e389 100644 --- a/admin/assets/css/series.css +++ b/admin/assets/css/series.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series.css diff --git a/admin/assets/css/series_list.css b/admin/assets/css/series_list.css index 36ee2efd..f5b4a48e 100644 --- a/admin/assets/css/series_list.css +++ b/admin/assets/css/series_list.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series_list.css diff --git a/admin/assets/css/sermon.css b/admin/assets/css/sermon.css index 9352be3d..83e7c15a 100644 --- a/admin/assets/css/sermon.css +++ b/admin/assets/css/sermon.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermon.css diff --git a/admin/assets/css/sermons.css b/admin/assets/css/sermons.css index fa594e87..f00e946c 100644 --- a/admin/assets/css/sermons.css +++ b/admin/assets/css/sermons.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermons.css diff --git a/admin/assets/css/statistic.css b/admin/assets/css/statistic.css index 2dfd3dac..37264ed4 100644 --- a/admin/assets/css/statistic.css +++ b/admin/assets/css/statistic.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage statistic.css diff --git a/admin/assets/css/statistics.css b/admin/assets/css/statistics.css index b95d2c4c..e33dd6bf 100644 --- a/admin/assets/css/statistics.css +++ b/admin/assets/css/statistics.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage statistics.css diff --git a/admin/config.xml b/admin/config.xml index 7a0bf7fe..dcba1654 100644 --- a/admin/config.xml +++ b/admin/config.xml @@ -357,7 +357,7 @@ description="COM_SERMONDISTRIBUTOR_CONFIG_UIKIT_LOAD_DESC" class="btn-group btn-group-yesno" default=""> - + " " " " +
+ + + + + + + + +
diff --git a/admin/controller.php b/admin/controller.php index 7f648b8d..1c834e5a 100644 --- a/admin/controller.php +++ b/admin/controller.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage controller.php diff --git a/admin/controllers/ajax.json.php b/admin/controllers/ajax.json.php index 9d279e63..3bff1257 100644 --- a/admin/controllers/ajax.json.php +++ b/admin/controllers/ajax.json.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage ajax.json.php diff --git a/admin/controllers/help.php b/admin/controllers/help.php index 962854af..0dd39704 100644 --- a/admin/controllers/help.php +++ b/admin/controllers/help.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help.php diff --git a/admin/controllers/help_document.php b/admin/controllers/help_document.php index 118cd5d1..4bb1511c 100644 --- a/admin/controllers/help_document.php +++ b/admin/controllers/help_document.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help_document.php @@ -60,13 +60,13 @@ class SermondistributorControllerHelp_document extends JControllerForm */ protected function allowAdd($data = array()) { - // [Interpretation 8642] Access check. + // [Interpretation 8855] Access check. $access = JFactory::getUser()->authorise('help_document.access', 'com_sermondistributor'); if (!$access) { return false; } - // [Interpretation 8653] In the absense of better information, revert to the component permissions. + // [Interpretation 8866] In the absense of better information, revert to the component permissions. return JFactory::getUser()->authorise('help_document.create', $this->option); } @@ -82,13 +82,13 @@ class SermondistributorControllerHelp_document extends JControllerForm */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 8796] get user object. + // [Interpretation 9009] get user object. $user = JFactory::getUser(); - // [Interpretation 8798] get record id. + // [Interpretation 9011] get record id. $recordId = (int) isset($data[$key]) ? $data[$key] : 0; - // [Interpretation 8805] Access check. + // [Interpretation 9018] Access check. $access = ($user->authorise('help_document.access', 'com_sermondistributor.help_document.' . (int) $recordId) && $user->authorise('help_document.access', 'com_sermondistributor')); if (!$access) { @@ -97,17 +97,17 @@ class SermondistributorControllerHelp_document extends JControllerForm if ($recordId) { - // [Interpretation 8814] The record has been set. Check the record permissions. + // [Interpretation 9027] The record has been set. Check the record permissions. $permission = $user->authorise('help_document.edit', 'com_sermondistributor.help_document.' . (int) $recordId); if (!$permission && !is_null($permission)) { if ($user->authorise('help_document.edit.own', 'com_sermondistributor.help_document.' . $recordId)) { - // [Interpretation 8836] Now test the owner is the user. + // [Interpretation 9049] Now test the owner is the user. $ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0; if (empty($ownerId)) { - // [Interpretation 8840] Need to do a lookup from the model. + // [Interpretation 9053] Need to do a lookup from the model. $record = $this->getModel()->getItem($recordId); if (empty($record)) @@ -117,7 +117,7 @@ class SermondistributorControllerHelp_document extends JControllerForm $ownerId = $record->created_by; } - // [Interpretation 8848] If the owner matches 'me' then allow. + // [Interpretation 9061] If the owner matches 'me' then allow. if ($ownerId == $user->id) { if ($user->authorise('help_document.edit.own', 'com_sermondistributor')) @@ -129,7 +129,7 @@ class SermondistributorControllerHelp_document extends JControllerForm return false; } } - // [Interpretation 8870] Since there is no permission, revert to the component permissions. + // [Interpretation 9083] Since there is no permission, revert to the component permissions. return $user->authorise('help_document.edit', $this->option); } diff --git a/admin/controllers/help_documents.php b/admin/controllers/help_documents.php index 99460f0a..e6be79b2 100644 --- a/admin/controllers/help_documents.php +++ b/admin/controllers/help_documents.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help_documents.php @@ -48,29 +48,29 @@ class SermondistributorControllerHelp_documents extends JControllerAdmin public function exportData() { - // [Interpretation 6705] Check for request forgeries + // [Interpretation 6800] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6707] check if export is allowed for this user. + // [Interpretation 6802] check if export is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('help_document.export', 'com_sermondistributor') && $user->authorise('core.export', 'com_sermondistributor')) { - // [Interpretation 6711] Get the input + // [Interpretation 6806] Get the input $input = JFactory::getApplication()->input; $pks = $input->post->get('cid', array(), 'array'); - // [Interpretation 6714] Sanitize the input + // [Interpretation 6809] Sanitize the input JArrayHelper::toInteger($pks); - // [Interpretation 6716] Get the model + // [Interpretation 6811] Get the model $model = $this->getModel('Help_documents'); - // [Interpretation 6718] get the data to export + // [Interpretation 6813] get the data to export $data = $model->getExportData($pks); if (SermondistributorHelper::checkArray($data)) { - // [Interpretation 6722] now set the data to the spreadsheet + // [Interpretation 6817] now set the data to the spreadsheet $date = JFactory::getDate(); SermondistributorHelper::xls($data,'Help_documents_'.$date->format('jS_F_Y'),'Help documents exported ('.$date->format('jS F, Y').')','help documents'); } } - // [Interpretation 6727] Redirect to the list screen with error. + // [Interpretation 6822] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_EXPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=help_documents', false), $message, 'error'); return; @@ -79,31 +79,31 @@ class SermondistributorControllerHelp_documents extends JControllerAdmin public function importData() { - // [Interpretation 6736] Check for request forgeries + // [Interpretation 6831] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6738] check if import is allowed for this user. + // [Interpretation 6833] check if import is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('help_document.import', 'com_sermondistributor') && $user->authorise('core.import', 'com_sermondistributor')) { - // [Interpretation 6742] Get the import model + // [Interpretation 6837] Get the import model $model = $this->getModel('Help_documents'); - // [Interpretation 6744] get the headers to import + // [Interpretation 6839] get the headers to import $headers = $model->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { - // [Interpretation 6748] Load headers to session. + // [Interpretation 6843] Load headers to session. $session = JFactory::getSession(); $headers = json_encode($headers); $session->set('help_document_VDM_IMPORTHEADERS', $headers); $session->set('backto_VDM_IMPORT', 'help_documents'); $session->set('dataType_VDM_IMPORTINTO', 'help_document'); - // [Interpretation 6754] Redirect to import view. + // [Interpretation 6849] Redirect to import view. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_SELECT_FILE_FOR_HELP_DOCUMENTS'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=import', false), $message); return; } } - // [Interpretation 6766] Redirect to the list screen with error. + // [Interpretation 6869] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=help_documents', false), $message, 'error'); return; diff --git a/admin/controllers/import.php b/admin/controllers/import.php index 1497dff8..f6f2f9b7 100644 --- a/admin/controllers/import.php +++ b/admin/controllers/import.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage import.php diff --git a/admin/controllers/preacher.php b/admin/controllers/preacher.php index 32f6b841..76d659b8 100644 --- a/admin/controllers/preacher.php +++ b/admin/controllers/preacher.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacher.php @@ -60,13 +60,13 @@ class SermondistributorControllerPreacher extends JControllerForm */ protected function allowAdd($data = array()) { - // [Interpretation 8642] Access check. + // [Interpretation 8855] Access check. $access = JFactory::getUser()->authorise('preacher.access', 'com_sermondistributor'); if (!$access) { return false; } - // [Interpretation 8653] In the absense of better information, revert to the component permissions. + // [Interpretation 8866] In the absense of better information, revert to the component permissions. return JFactory::getUser()->authorise('preacher.create', $this->option); } @@ -82,13 +82,13 @@ class SermondistributorControllerPreacher extends JControllerForm */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 8796] get user object. + // [Interpretation 9009] get user object. $user = JFactory::getUser(); - // [Interpretation 8798] get record id. + // [Interpretation 9011] get record id. $recordId = (int) isset($data[$key]) ? $data[$key] : 0; - // [Interpretation 8805] Access check. + // [Interpretation 9018] Access check. $access = ($user->authorise('preacher.access', 'com_sermondistributor.preacher.' . (int) $recordId) && $user->authorise('preacher.access', 'com_sermondistributor')); if (!$access) { @@ -97,17 +97,17 @@ class SermondistributorControllerPreacher extends JControllerForm if ($recordId) { - // [Interpretation 8814] The record has been set. Check the record permissions. + // [Interpretation 9027] The record has been set. Check the record permissions. $permission = $user->authorise('preacher.edit', 'com_sermondistributor.preacher.' . (int) $recordId); if (!$permission && !is_null($permission)) { if ($user->authorise('preacher.edit.own', 'com_sermondistributor.preacher.' . $recordId)) { - // [Interpretation 8836] Now test the owner is the user. + // [Interpretation 9049] Now test the owner is the user. $ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0; if (empty($ownerId)) { - // [Interpretation 8840] Need to do a lookup from the model. + // [Interpretation 9053] Need to do a lookup from the model. $record = $this->getModel()->getItem($recordId); if (empty($record)) @@ -117,7 +117,7 @@ class SermondistributorControllerPreacher extends JControllerForm $ownerId = $record->created_by; } - // [Interpretation 8848] If the owner matches 'me' then allow. + // [Interpretation 9061] If the owner matches 'me' then allow. if ($ownerId == $user->id) { if ($user->authorise('preacher.edit.own', 'com_sermondistributor')) @@ -129,7 +129,7 @@ class SermondistributorControllerPreacher extends JControllerForm return false; } } - // [Interpretation 8870] Since there is no permission, revert to the component permissions. + // [Interpretation 9083] Since there is no permission, revert to the component permissions. return $user->authorise('preacher.edit', $this->option); } diff --git a/admin/controllers/preachers.php b/admin/controllers/preachers.php index e6592dda..21cc8d0b 100644 --- a/admin/controllers/preachers.php +++ b/admin/controllers/preachers.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preachers.php @@ -48,29 +48,29 @@ class SermondistributorControllerPreachers extends JControllerAdmin public function exportData() { - // [Interpretation 6705] Check for request forgeries + // [Interpretation 6800] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6707] check if export is allowed for this user. + // [Interpretation 6802] check if export is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('preacher.export', 'com_sermondistributor') && $user->authorise('core.export', 'com_sermondistributor')) { - // [Interpretation 6711] Get the input + // [Interpretation 6806] Get the input $input = JFactory::getApplication()->input; $pks = $input->post->get('cid', array(), 'array'); - // [Interpretation 6714] Sanitize the input + // [Interpretation 6809] Sanitize the input JArrayHelper::toInteger($pks); - // [Interpretation 6716] Get the model + // [Interpretation 6811] Get the model $model = $this->getModel('Preachers'); - // [Interpretation 6718] get the data to export + // [Interpretation 6813] get the data to export $data = $model->getExportData($pks); if (SermondistributorHelper::checkArray($data)) { - // [Interpretation 6722] now set the data to the spreadsheet + // [Interpretation 6817] now set the data to the spreadsheet $date = JFactory::getDate(); SermondistributorHelper::xls($data,'Preachers_'.$date->format('jS_F_Y'),'Preachers exported ('.$date->format('jS F, Y').')','preachers'); } } - // [Interpretation 6727] Redirect to the list screen with error. + // [Interpretation 6822] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_EXPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=preachers', false), $message, 'error'); return; @@ -79,31 +79,31 @@ class SermondistributorControllerPreachers extends JControllerAdmin public function importData() { - // [Interpretation 6736] Check for request forgeries + // [Interpretation 6831] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6738] check if import is allowed for this user. + // [Interpretation 6833] check if import is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('preacher.import', 'com_sermondistributor') && $user->authorise('core.import', 'com_sermondistributor')) { - // [Interpretation 6742] Get the import model + // [Interpretation 6837] Get the import model $model = $this->getModel('Preachers'); - // [Interpretation 6744] get the headers to import + // [Interpretation 6839] get the headers to import $headers = $model->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { - // [Interpretation 6748] Load headers to session. + // [Interpretation 6843] Load headers to session. $session = JFactory::getSession(); $headers = json_encode($headers); $session->set('preacher_VDM_IMPORTHEADERS', $headers); $session->set('backto_VDM_IMPORT', 'preachers'); $session->set('dataType_VDM_IMPORTINTO', 'preacher'); - // [Interpretation 6754] Redirect to import view. + // [Interpretation 6849] Redirect to import view. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_SELECT_FILE_FOR_PREACHERS'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=import', false), $message); return; } } - // [Interpretation 6766] Redirect to the list screen with error. + // [Interpretation 6869] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=preachers', false), $message, 'error'); return; diff --git a/admin/controllers/series.php b/admin/controllers/series.php index 43c62e68..0b46e956 100644 --- a/admin/controllers/series.php +++ b/admin/controllers/series.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series.php @@ -60,13 +60,13 @@ class SermondistributorControllerSeries extends JControllerForm */ protected function allowAdd($data = array()) { - // [Interpretation 8642] Access check. + // [Interpretation 8855] Access check. $access = JFactory::getUser()->authorise('series.access', 'com_sermondistributor'); if (!$access) { return false; } - // [Interpretation 8653] In the absense of better information, revert to the component permissions. + // [Interpretation 8866] In the absense of better information, revert to the component permissions. return JFactory::getUser()->authorise('series.create', $this->option); } @@ -82,13 +82,13 @@ class SermondistributorControllerSeries extends JControllerForm */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 8796] get user object. + // [Interpretation 9009] get user object. $user = JFactory::getUser(); - // [Interpretation 8798] get record id. + // [Interpretation 9011] get record id. $recordId = (int) isset($data[$key]) ? $data[$key] : 0; - // [Interpretation 8805] Access check. + // [Interpretation 9018] Access check. $access = ($user->authorise('series.access', 'com_sermondistributor.series.' . (int) $recordId) && $user->authorise('series.access', 'com_sermondistributor')); if (!$access) { @@ -97,17 +97,17 @@ class SermondistributorControllerSeries extends JControllerForm if ($recordId) { - // [Interpretation 8814] The record has been set. Check the record permissions. + // [Interpretation 9027] The record has been set. Check the record permissions. $permission = $user->authorise('series.edit', 'com_sermondistributor.series.' . (int) $recordId); if (!$permission && !is_null($permission)) { if ($user->authorise('series.edit.own', 'com_sermondistributor.series.' . $recordId)) { - // [Interpretation 8836] Now test the owner is the user. + // [Interpretation 9049] Now test the owner is the user. $ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0; if (empty($ownerId)) { - // [Interpretation 8840] Need to do a lookup from the model. + // [Interpretation 9053] Need to do a lookup from the model. $record = $this->getModel()->getItem($recordId); if (empty($record)) @@ -117,7 +117,7 @@ class SermondistributorControllerSeries extends JControllerForm $ownerId = $record->created_by; } - // [Interpretation 8848] If the owner matches 'me' then allow. + // [Interpretation 9061] If the owner matches 'me' then allow. if ($ownerId == $user->id) { if ($user->authorise('series.edit.own', 'com_sermondistributor')) @@ -129,7 +129,7 @@ class SermondistributorControllerSeries extends JControllerForm return false; } } - // [Interpretation 8870] Since there is no permission, revert to the component permissions. + // [Interpretation 9083] Since there is no permission, revert to the component permissions. return $user->authorise('series.edit', $this->option); } diff --git a/admin/controllers/series_list.php b/admin/controllers/series_list.php index a250c08d..b11e9ff0 100644 --- a/admin/controllers/series_list.php +++ b/admin/controllers/series_list.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series_list.php @@ -48,29 +48,29 @@ class SermondistributorControllerSeries_list extends JControllerAdmin public function exportData() { - // [Interpretation 6705] Check for request forgeries + // [Interpretation 6800] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6707] check if export is allowed for this user. + // [Interpretation 6802] check if export is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('series.export', 'com_sermondistributor') && $user->authorise('core.export', 'com_sermondistributor')) { - // [Interpretation 6711] Get the input + // [Interpretation 6806] Get the input $input = JFactory::getApplication()->input; $pks = $input->post->get('cid', array(), 'array'); - // [Interpretation 6714] Sanitize the input + // [Interpretation 6809] Sanitize the input JArrayHelper::toInteger($pks); - // [Interpretation 6716] Get the model + // [Interpretation 6811] Get the model $model = $this->getModel('Series_list'); - // [Interpretation 6718] get the data to export + // [Interpretation 6813] get the data to export $data = $model->getExportData($pks); if (SermondistributorHelper::checkArray($data)) { - // [Interpretation 6722] now set the data to the spreadsheet + // [Interpretation 6817] now set the data to the spreadsheet $date = JFactory::getDate(); SermondistributorHelper::xls($data,'Series_list_'.$date->format('jS_F_Y'),'Series list exported ('.$date->format('jS F, Y').')','series list'); } } - // [Interpretation 6727] Redirect to the list screen with error. + // [Interpretation 6822] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_EXPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=series_list', false), $message, 'error'); return; @@ -79,31 +79,31 @@ class SermondistributorControllerSeries_list extends JControllerAdmin public function importData() { - // [Interpretation 6736] Check for request forgeries + // [Interpretation 6831] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6738] check if import is allowed for this user. + // [Interpretation 6833] check if import is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('series.import', 'com_sermondistributor') && $user->authorise('core.import', 'com_sermondistributor')) { - // [Interpretation 6742] Get the import model + // [Interpretation 6837] Get the import model $model = $this->getModel('Series_list'); - // [Interpretation 6744] get the headers to import + // [Interpretation 6839] get the headers to import $headers = $model->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { - // [Interpretation 6748] Load headers to session. + // [Interpretation 6843] Load headers to session. $session = JFactory::getSession(); $headers = json_encode($headers); $session->set('series_VDM_IMPORTHEADERS', $headers); $session->set('backto_VDM_IMPORT', 'series_list'); $session->set('dataType_VDM_IMPORTINTO', 'series'); - // [Interpretation 6754] Redirect to import view. + // [Interpretation 6849] Redirect to import view. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_SELECT_FILE_FOR_SERIES_LIST'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=import', false), $message); return; } } - // [Interpretation 6766] Redirect to the list screen with error. + // [Interpretation 6869] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=series_list', false), $message, 'error'); return; diff --git a/admin/controllers/sermon.php b/admin/controllers/sermon.php index b9ac1388..a8827b2a 100644 --- a/admin/controllers/sermon.php +++ b/admin/controllers/sermon.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermon.php @@ -60,10 +60,10 @@ class SermondistributorControllerSermon extends JControllerForm */ protected function allowAdd($data = array()) { - // [Interpretation 8597] get the user object + // [Interpretation 8810] get the user object $user = JFactory::getUser(); - // [Interpretation 8602] Access check. + // [Interpretation 8815] Access check. $access = $user->authorise('sermon.access', 'com_sermondistributor'); if (!$access) { @@ -74,13 +74,13 @@ class SermondistributorControllerSermon extends JControllerForm if ($categoryId) { - // [Interpretation 8613] If the category has been passed in the URL check it. + // [Interpretation 8826] If the category has been passed in the URL check it. $allow = $user->authorise('core.create', $this->option . '.sermons.category.' . $categoryId); } if ($allow === null) { - // [Interpretation 8622] In the absense of better information, revert to the component permissions. + // [Interpretation 8835] In the absense of better information, revert to the component permissions. return $user->authorise('sermon.create', $this->option); } else @@ -100,13 +100,13 @@ class SermondistributorControllerSermon extends JControllerForm * @since 1.6 */ protected function allowEdit($data = array(), $key = 'id') - { // [Interpretation 8700] get user object. + { // [Interpretation 8913] get user object. $user = JFactory::getUser(); - // [Interpretation 8702] get record id. + // [Interpretation 8915] get record id. $recordId = (int) isset($data[$key]) ? $data[$key] : 0; - // [Interpretation 8709] Access check. + // [Interpretation 8922] Access check. $access = ($user->authorise('sermon.access', 'com_sermondistributor.sermon.' . (int) $recordId) && $user->authorise('sermon.access', 'com_sermondistributor')); if (!$access) { @@ -115,17 +115,17 @@ class SermondistributorControllerSermon extends JControllerForm if ($recordId) { - // [Interpretation 8718] The record has been set. Check the record permissions. + // [Interpretation 8931] The record has been set. Check the record permissions. $permission = $user->authorise('sermon.edit', 'com_sermondistributor.sermon.' . (int) $recordId); if (!$permission && !is_null($permission)) { if ($user->authorise('sermon.edit.own', 'com_sermondistributor.sermon.' . $recordId)) { - // [Interpretation 8740] Fallback on edit.own. Now test the owner is the user. + // [Interpretation 8953] Fallback on edit.own. Now test the owner is the user. $ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0; if (empty($ownerId)) { - // [Interpretation 8744] Need to do a lookup from the model. + // [Interpretation 8957] Need to do a lookup from the model. $record = $this->getModel()->getItem($recordId); if (empty($record)) @@ -135,7 +135,7 @@ class SermondistributorControllerSermon extends JControllerForm $ownerId = $record->created_by; } - // [Interpretation 8752] If the owner matches 'me' then do the test. + // [Interpretation 8965] If the owner matches 'me' then do the test. if ($ownerId == $user->id) { if ($user->authorise('sermon.edit.own', 'com_sermondistributor')) @@ -151,7 +151,7 @@ class SermondistributorControllerSermon extends JControllerForm if ($categoryId) { - // [Interpretation 8774] The category has been set. Check the category permissions. + // [Interpretation 8987] The category has been set. Check the category permissions. $catpermission = $user->authorise('core.edit', $this->option . '.sermons.category.' . $categoryId); if (!$catpermission && !is_null($catpermission)) { @@ -159,7 +159,7 @@ class SermondistributorControllerSermon extends JControllerForm } } } - // [Interpretation 8784] Since there is no permission, revert to the component permissions. + // [Interpretation 8997] Since there is no permission, revert to the component permissions. return $user->authorise('sermon.edit', $this->option); } diff --git a/admin/controllers/sermondistributor.php b/admin/controllers/sermondistributor.php index fdcce035..3bc62e70 100644 --- a/admin/controllers/sermondistributor.php +++ b/admin/controllers/sermondistributor.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermondistributor.php diff --git a/admin/controllers/sermons.php b/admin/controllers/sermons.php index 4d3c647d..f638cce5 100644 --- a/admin/controllers/sermons.php +++ b/admin/controllers/sermons.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermons.php @@ -48,29 +48,29 @@ class SermondistributorControllerSermons extends JControllerAdmin public function exportData() { - // [Interpretation 6705] Check for request forgeries + // [Interpretation 6800] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6707] check if export is allowed for this user. + // [Interpretation 6802] check if export is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('sermon.export', 'com_sermondistributor') && $user->authorise('core.export', 'com_sermondistributor')) { - // [Interpretation 6711] Get the input + // [Interpretation 6806] Get the input $input = JFactory::getApplication()->input; $pks = $input->post->get('cid', array(), 'array'); - // [Interpretation 6714] Sanitize the input + // [Interpretation 6809] Sanitize the input JArrayHelper::toInteger($pks); - // [Interpretation 6716] Get the model + // [Interpretation 6811] Get the model $model = $this->getModel('Sermons'); - // [Interpretation 6718] get the data to export + // [Interpretation 6813] get the data to export $data = $model->getExportData($pks); if (SermondistributorHelper::checkArray($data)) { - // [Interpretation 6722] now set the data to the spreadsheet + // [Interpretation 6817] now set the data to the spreadsheet $date = JFactory::getDate(); SermondistributorHelper::xls($data,'Sermons_'.$date->format('jS_F_Y'),'Sermons exported ('.$date->format('jS F, Y').')','sermons'); } } - // [Interpretation 6727] Redirect to the list screen with error. + // [Interpretation 6822] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_EXPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=sermons', false), $message, 'error'); return; @@ -79,31 +79,31 @@ class SermondistributorControllerSermons extends JControllerAdmin public function importData() { - // [Interpretation 6736] Check for request forgeries + // [Interpretation 6831] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6738] check if import is allowed for this user. + // [Interpretation 6833] check if import is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('sermon.import', 'com_sermondistributor') && $user->authorise('core.import', 'com_sermondistributor')) { - // [Interpretation 6742] Get the import model + // [Interpretation 6837] Get the import model $model = $this->getModel('Sermons'); - // [Interpretation 6744] get the headers to import + // [Interpretation 6839] get the headers to import $headers = $model->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { - // [Interpretation 6748] Load headers to session. + // [Interpretation 6843] Load headers to session. $session = JFactory::getSession(); $headers = json_encode($headers); $session->set('sermon_VDM_IMPORTHEADERS', $headers); $session->set('backto_VDM_IMPORT', 'sermons'); $session->set('dataType_VDM_IMPORTINTO', 'sermon'); - // [Interpretation 6754] Redirect to import view. + // [Interpretation 6849] Redirect to import view. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_SELECT_FILE_FOR_SERMONS'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=import', false), $message); return; } } - // [Interpretation 6766] Redirect to the list screen with error. + // [Interpretation 6869] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=sermons', false), $message, 'error'); return; diff --git a/admin/controllers/statistic.php b/admin/controllers/statistic.php index 134605e6..7b978b73 100644 --- a/admin/controllers/statistic.php +++ b/admin/controllers/statistic.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage statistic.php @@ -60,13 +60,13 @@ class SermondistributorControllerStatistic extends JControllerForm */ protected function allowAdd($data = array()) { - // [Interpretation 8642] Access check. + // [Interpretation 8855] Access check. $access = JFactory::getUser()->authorise('statistic.access', 'com_sermondistributor'); if (!$access) { return false; } - // [Interpretation 8653] In the absense of better information, revert to the component permissions. + // [Interpretation 8866] In the absense of better information, revert to the component permissions. return JFactory::getUser()->authorise('statistic.create', $this->option); } @@ -82,13 +82,13 @@ class SermondistributorControllerStatistic extends JControllerForm */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 8796] get user object. + // [Interpretation 9009] get user object. $user = JFactory::getUser(); - // [Interpretation 8798] get record id. + // [Interpretation 9011] get record id. $recordId = (int) isset($data[$key]) ? $data[$key] : 0; - // [Interpretation 8805] Access check. + // [Interpretation 9018] Access check. $access = ($user->authorise('statistic.access', 'com_sermondistributor.statistic.' . (int) $recordId) && $user->authorise('statistic.access', 'com_sermondistributor')); if (!$access) { @@ -97,17 +97,17 @@ class SermondistributorControllerStatistic extends JControllerForm if ($recordId) { - // [Interpretation 8814] The record has been set. Check the record permissions. + // [Interpretation 9027] The record has been set. Check the record permissions. $permission = $user->authorise('statistic.edit', 'com_sermondistributor.statistic.' . (int) $recordId); if (!$permission && !is_null($permission)) { if ($user->authorise('statistic.edit.own', 'com_sermondistributor.statistic.' . $recordId)) { - // [Interpretation 8836] Now test the owner is the user. + // [Interpretation 9049] Now test the owner is the user. $ownerId = (int) isset($data['created_by']) ? $data['created_by'] : 0; if (empty($ownerId)) { - // [Interpretation 8840] Need to do a lookup from the model. + // [Interpretation 9053] Need to do a lookup from the model. $record = $this->getModel()->getItem($recordId); if (empty($record)) @@ -117,7 +117,7 @@ class SermondistributorControllerStatistic extends JControllerForm $ownerId = $record->created_by; } - // [Interpretation 8848] If the owner matches 'me' then allow. + // [Interpretation 9061] If the owner matches 'me' then allow. if ($ownerId == $user->id) { if ($user->authorise('statistic.edit.own', 'com_sermondistributor')) @@ -129,7 +129,7 @@ class SermondistributorControllerStatistic extends JControllerForm return false; } } - // [Interpretation 8870] Since there is no permission, revert to the component permissions. + // [Interpretation 9083] Since there is no permission, revert to the component permissions. return $user->authorise('statistic.edit', $this->option); } diff --git a/admin/controllers/statistics.php b/admin/controllers/statistics.php index 367ac7bd..87ca9678 100644 --- a/admin/controllers/statistics.php +++ b/admin/controllers/statistics.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage statistics.php @@ -48,29 +48,29 @@ class SermondistributorControllerStatistics extends JControllerAdmin public function exportData() { - // [Interpretation 6705] Check for request forgeries + // [Interpretation 6800] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6707] check if export is allowed for this user. + // [Interpretation 6802] check if export is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('statistic.export', 'com_sermondistributor') && $user->authorise('core.export', 'com_sermondistributor')) { - // [Interpretation 6711] Get the input + // [Interpretation 6806] Get the input $input = JFactory::getApplication()->input; $pks = $input->post->get('cid', array(), 'array'); - // [Interpretation 6714] Sanitize the input + // [Interpretation 6809] Sanitize the input JArrayHelper::toInteger($pks); - // [Interpretation 6716] Get the model + // [Interpretation 6811] Get the model $model = $this->getModel('Statistics'); - // [Interpretation 6718] get the data to export + // [Interpretation 6813] get the data to export $data = $model->getExportData($pks); if (SermondistributorHelper::checkArray($data)) { - // [Interpretation 6722] now set the data to the spreadsheet + // [Interpretation 6817] now set the data to the spreadsheet $date = JFactory::getDate(); SermondistributorHelper::xls($data,'Statistics_'.$date->format('jS_F_Y'),'Statistics exported ('.$date->format('jS F, Y').')','statistics'); } } - // [Interpretation 6727] Redirect to the list screen with error. + // [Interpretation 6822] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_EXPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=statistics', false), $message, 'error'); return; @@ -79,31 +79,31 @@ class SermondistributorControllerStatistics extends JControllerAdmin public function importData() { - // [Interpretation 6736] Check for request forgeries + // [Interpretation 6831] Check for request forgeries JSession::checkToken() or die(JText::_('JINVALID_TOKEN')); - // [Interpretation 6738] check if import is allowed for this user. + // [Interpretation 6833] check if import is allowed for this user. $user = JFactory::getUser(); if ($user->authorise('statistic.import', 'com_sermondistributor') && $user->authorise('core.import', 'com_sermondistributor')) { - // [Interpretation 6742] Get the import model + // [Interpretation 6837] Get the import model $model = $this->getModel('Statistics'); - // [Interpretation 6744] get the headers to import + // [Interpretation 6839] get the headers to import $headers = $model->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { - // [Interpretation 6748] Load headers to session. + // [Interpretation 6843] Load headers to session. $session = JFactory::getSession(); $headers = json_encode($headers); $session->set('statistic_VDM_IMPORTHEADERS', $headers); $session->set('backto_VDM_IMPORT', 'statistics'); $session->set('dataType_VDM_IMPORTINTO', 'statistic'); - // [Interpretation 6754] Redirect to import view. + // [Interpretation 6849] Redirect to import view. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_SELECT_FILE_FOR_STATISTICS'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=import', false), $message); return; } } - // [Interpretation 6766] Redirect to the list screen with error. + // [Interpretation 6869] Redirect to the list screen with error. $message = JText::_('COM_SERMONDISTRIBUTOR_IMPORT_FAILED'); $this->setRedirect(JRoute::_('index.php?option=com_sermondistributor&view=statistics', false), $message, 'error'); return; diff --git a/admin/helpers/PHPExcel/Reader/ChunkReadFilter.php b/admin/helpers/PHPExcel/Reader/ChunkReadFilter.php new file mode 100644 index 00000000..204ae056 --- /dev/null +++ b/admin/helpers/PHPExcel/Reader/ChunkReadFilter.php @@ -0,0 +1,49 @@ + + @copyright Copyright (C) 2015. All Rights Reserved + @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html + +/-----------------------------------------------------------------------------------------------------------------------------*/ + +/** PHPExcel root directory */ +if (!defined('PHPEXCEL_ROOT')) { + /** + * @ignore + */ + define('PHPEXCEL_ROOT', dirname(__FILE__) . '/../../'); + require(PHPEXCEL_ROOT . 'PHPExcel/Autoloader.php'); +} + +class PHPExcel_Reader_chunkReadFilter implements PHPExcel_Reader_IReadFilter +{ + private $_startRow = 0; + private $_endRow = 0; + + /** Set the list of rows that we want to read */ + public function setRows($startRow, $chunkSize) + { + $this->_startRow = $startRow; + $this->_endRow = $startRow + $chunkSize; + } + + public function readCell($column, $row, $worksheetName = '') + { + // Only read the heading row, and the rows that are configured in $this->_startRow and $this->_endRow + if (($row == 1) || ($row >= $this->_startRow && $row < $this->_endRow)) { + return true; + } + return false; + } +} \ No newline at end of file diff --git a/admin/helpers/html/batch_.php b/admin/helpers/html/batch_.php index 24ec27c5..0c301e91 100644 --- a/admin/helpers/html/batch_.php +++ b/admin/helpers/html/batch_.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage batch_.php diff --git a/admin/helpers/sermondistributor.php b/admin/helpers/sermondistributor.php index 8b61e692..b79aeb32 100644 --- a/admin/helpers/sermondistributor.php +++ b/admin/helpers/sermondistributor.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermondistributor.php @@ -119,7 +119,7 @@ abstract class SermondistributorHelper } $keyCounter = base64_encode($safe->encryptString(json_encode($keyCounter))); $token = JSession::getFormToken(); - $downloadURL = 'index.php?option=com_sermondistributor&task=download.file&key='.$keyCounter.'&token='.$token; + $downloadURL = JURI::root().'index.php?option=com_sermondistributor&task=download.file&key='.$keyCounter.'&token='.$token; // check if local .htaccess should be set $setHtaccess = false; $onclick = ' onclick="sermonCounter(\''.$keyCounter.'\',\'FILENAME\');"'; @@ -151,7 +151,7 @@ abstract class SermondistributorHelper // get the file name use the same method as the auto $filename = self::getDownloadFileName($sermon,$key,'local'); $lockedFolderPath = base64_encode($safe->encryptString($localFolder.$key)); - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$lockedFolderPath.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$lockedFolderPath.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type && $allowDirect) @@ -180,7 +180,7 @@ abstract class SermondistributorHelper { // get the file name use the same method as the auto $filename = self::getDownloadFileName($sermon,$key,'dropbox_manual'); - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$dropURL.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$dropURL.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type && $dropURL) @@ -210,7 +210,7 @@ abstract class SermondistributorHelper if (1 == $sermon->link_type && $dropURL) { // get the file name (use the same method as the auto - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$dropURL.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$dropURL.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type && $dropURL) @@ -234,7 +234,7 @@ abstract class SermondistributorHelper if (1 == $sermon->link_type) { $lockedURL = base64_encode($safe->encryptString($sermon->url)); - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$lockedURL.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$lockedURL.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type) @@ -553,23 +553,23 @@ abstract class SermondistributorHelper $targetgroups = json_decode($help->groups, true); if (!array_intersect($targetgroups, $groups)) { - // [Interpretation 653] if user not in those target groups then remove the item + // [Interpretation 675] if user not in those target groups then remove the item unset($helps[$nr]); continue; } } - // [Interpretation 658] set the return type + // [Interpretation 680] set the return type switch ($help->type) { - // [Interpretation 661] set joomla article + // [Interpretation 683] set joomla article case 1: return self::loadArticleLink($help->article); break; - // [Interpretation 665] set help text + // [Interpretation 687] set help text case 2: return self::loadHelpTextLink($help->id); break; - // [Interpretation 669] set Link + // [Interpretation 691] set Link case 3: return $help->url; break; @@ -698,7 +698,7 @@ abstract class SermondistributorHelper { if (strpos($content,'class="uk-') !== false) { - // [Interpretation 1909] reset + // [Interpretation 1989] reset $temp = array(); foreach (self::$uk_components as $looking => $add) { @@ -707,15 +707,15 @@ abstract class SermondistributorHelper $temp[] = $looking; } } - // [Interpretation 1918] make sure uikit is loaded to config + // [Interpretation 1998] make sure uikit is loaded to config if (strpos($content,'class="uk-') !== false) { self::$uikit = true; } - // [Interpretation 1923] sorter + // [Interpretation 2003] sorter if (self::checkArray($temp)) { - // [Interpretation 1926] merger + // [Interpretation 2006] merger if (self::checkArray($classes)) { $newTemp = array_merge($temp,$classes); @@ -736,37 +736,37 @@ abstract class SermondistributorHelper */ public static function xls($rows,$fileName = null,$title = null,$subjectTab = null,$creator = 'Vast Development Method',$description = null,$category = null,$keywords = null,$modified = null) { - // [Interpretation 708] set the user + // [Interpretation 730] set the user $user = JFactory::getUser(); - // [Interpretation 711] set fieldname if not set + // [Interpretation 733] set fieldname if not set if (!$fileName) { $fileName = 'exported_'.JFactory::getDate()->format('jS_F_Y'); } - // [Interpretation 716] set modiefied if not set + // [Interpretation 738] set modiefied if not set if (!$modified) { $modified = $user->name; } - // [Interpretation 721] set title if not set + // [Interpretation 743] set title if not set if (!$title) { $title = 'Book1'; } - // [Interpretation 726] set tab name if not set + // [Interpretation 748] set tab name if not set if (!$subjectTab) { $subjectTab = 'Sheet1'; } - // [Interpretation 732] make sure the file is loaded + // [Interpretation 754] make sure the file is loaded JLoader::import('PHPExcel', JPATH_COMPONENT_ADMINISTRATOR . '/helpers'); - // [Interpretation 735] Create new PHPExcel object + // [Interpretation 757] Create new PHPExcel object $objPHPExcel = new PHPExcel(); - // [Interpretation 738] Set document properties + // [Interpretation 760] Set document properties $objPHPExcel->getProperties()->setCreator($creator) ->setCompany('Vast Development Method') ->setLastModifiedBy($modified) @@ -785,7 +785,7 @@ abstract class SermondistributorHelper $objPHPExcel->getProperties()->setCategory($category); } - // [Interpretation 757] Some styles + // [Interpretation 779] Some styles $headerStyles = array( 'font' => array( 'bold' => true, @@ -807,7 +807,7 @@ abstract class SermondistributorHelper 'name' => 'Verdana' )); - // [Interpretation 779] Add some data + // [Interpretation 801] Add some data if (self::checkArray($rows)) { $i = 1; @@ -834,20 +834,20 @@ abstract class SermondistributorHelper return false; } - // [Interpretation 806] Rename worksheet + // [Interpretation 828] Rename worksheet $objPHPExcel->getActiveSheet()->setTitle($subjectTab); - // [Interpretation 809] Set active sheet index to the first sheet, so Excel opens this as the first sheet + // [Interpretation 831] Set active sheet index to the first sheet, so Excel opens this as the first sheet $objPHPExcel->setActiveSheetIndex(0); - // [Interpretation 812] Redirect output to a client's web browser (Excel5) + // [Interpretation 834] Redirect output to a client's web browser (Excel5) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$fileName.'.xls"'); header('Cache-Control: max-age=0'); - // [Interpretation 816] If you're serving to IE 9, then the following may be needed + // [Interpretation 838] If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); - // [Interpretation 819] If you're serving to IE over SSL, then the following may be needed + // [Interpretation 841] If you're serving to IE over SSL, then the following may be needed header ('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past header ('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1 @@ -863,18 +863,27 @@ abstract class SermondistributorHelper */ public static function getFileHeaders($dataType) { - // [Interpretation 835] make sure the file is loaded + // [Interpretation 857] make sure these files are loaded JLoader::import('PHPExcel', JPATH_COMPONENT_ADMINISTRATOR . '/helpers'); - // [Interpretation 837] get session object - $session = JFactory::getSession(); + JLoader::import('ChunkReadFilter', JPATH_COMPONENT_ADMINISTRATOR . '/helpers/PHPExcel/Reader'); + // [Interpretation 860] get session object + $session = JFactory::getSession(); $package = $session->get('package', null); $package = json_decode($package, true); - // [Interpretation 841] set the headers + // [Interpretation 864] set the headers if(isset($package['dir'])) { + $chunkFilter = new PHPExcel_Reader_chunkReadFilter(); + // [Interpretation 868] only load first three rows + $chunkFilter->setRows(2,1); + // [Interpretation 870] identify the file type $inputFileType = PHPExcel_IOFactory::identify($package['dir']); + // [Interpretation 872] create the reader for this file type $excelReader = PHPExcel_IOFactory::createReader($inputFileType); + // [Interpretation 874] load the limiting filter + $excelReader->setReadFilter($chunkFilter); $excelReader->setReadDataOnly(true); + // [Interpretation 877] load the rows (only first three) $excelObj = $excelReader->load($package['dir']); $headers = array(); foreach ($excelObj->getActiveSheet()->getRowIterator() as $row) @@ -970,31 +979,33 @@ abstract class SermondistributorHelper return false; } - public static function jsonToString($value, $sperator = ", ") + public static function jsonToString($value, $sperator = ", ", $table = null) { // check if string is JSON $result = json_decode($value, true); - if (json_last_error() === JSON_ERROR_NONE) { - // is JSON + if (json_last_error() === JSON_ERROR_NONE) + { + // is JSON if (self::checkArray($result)) { - $value = ''; - $counter = 0; - foreach ($result as $string) + if (self::checkString($table)) { - if ($counter) + $names = array(); + foreach ($result as $val) { - $value .= $sperator.$string; + if ($name = self::getVar($table, $val, 'id', 'name')) + { + $names[] = $name; + } } - else + if (self::checkArray($names)) { - $value .= $string; - } - $counter++; + return (string) implode($sperator,$names); + } } - return $value; + return (string) implode($sperator,$result); } - return json_decode($value); + return (string) json_decode($value); } return $value; } @@ -1649,7 +1660,7 @@ abstract class SermondistributorHelper $w .= ' '; if($r < 100) { - $word .= 'and '; + $w .= 'and '; } $w .= self::numberToString($r); } diff --git a/admin/language/en-GB/en-GB.com_sermondistributor.ini b/admin/language/en-GB/en-GB.com_sermondistributor.ini index a37520a3..a8c50c08 100644 --- a/admin/language/en-GB/en-GB.com_sermondistributor.ini +++ b/admin/language/en-GB/en-GB.com_sermondistributor.ini @@ -148,6 +148,7 @@ COM_SERMONDISTRIBUTOR_CONFIG_GREEN="Green" COM_SERMONDISTRIBUTOR_CONFIG_GRID="Grid" COM_SERMONDISTRIBUTOR_CONFIG_JPEG=".jpeg" COM_SERMONDISTRIBUTOR_CONFIG_JPG=".jpg" +COM_SERMONDISTRIBUTOR_CONFIG_JPLAYER="jPlayer" COM_SERMONDISTRIBUTOR_CONFIG_LEGACY="Legacy" COM_SERMONDISTRIBUTOR_CONFIG_LINES="Lines" COM_SERMONDISTRIBUTOR_CONFIG_LINK_ENCRYPTION_DESCRIPTION="Add the key to use when download link option is set to encrypted." @@ -489,6 +490,9 @@ COM_SERMONDISTRIBUTOR_CONFIG_ONLY_EXTRA="Only Extra" COM_SERMONDISTRIBUTOR_CONFIG_PANEL="Panel" COM_SERMONDISTRIBUTOR_CONFIG_PDF=".pdf" COM_SERMONDISTRIBUTOR_CONFIG_PLAIN="Plain" +COM_SERMONDISTRIBUTOR_CONFIG_PLAYER="Player" +COM_SERMONDISTRIBUTOR_CONFIG_PLAYER_DESCRIPTION="Select the player you would like to use on your site." +COM_SERMONDISTRIBUTOR_CONFIG_PLAYER_LABEL="Players" COM_SERMONDISTRIBUTOR_CONFIG_PNG=".png" COM_SERMONDISTRIBUTOR_CONFIG_PPS=".pps" COM_SERMONDISTRIBUTOR_CONFIG_PPSX=".ppsx" @@ -565,6 +569,7 @@ COM_SERMONDISTRIBUTOR_CONFIG_PREACHER_WEBSITE_LABEL="Show Website" COM_SERMONDISTRIBUTOR_CONFIG_PUBLISHED="Published" COM_SERMONDISTRIBUTOR_CONFIG_PURPLE="Purple" COM_SERMONDISTRIBUTOR_CONFIG_RED="Red" +COM_SERMONDISTRIBUTOR_CONFIG_SELECT_AN_OPTION="select an option" COM_SERMONDISTRIBUTOR_CONFIG_SERIES="Series" COM_SERMONDISTRIBUTOR_CONFIG_SERIES_BOX_CONTRAST_DESCRIPTION="Set if text should be contrast in box display option." COM_SERMONDISTRIBUTOR_CONFIG_SERIES_BOX_CONTRAST_LABEL="Show Contrast Text" @@ -641,6 +646,7 @@ COM_SERMONDISTRIBUTOR_CONFIG_SERMON_SERIES_LABEL="Show Sermon Series" COM_SERMONDISTRIBUTOR_CONFIG_SERMON_STATE_DESCRIPTION="Set the state in which sermons so be loaded at initial build." COM_SERMONDISTRIBUTOR_CONFIG_SERMON_STATE_LABEL="Auto Sermons State" COM_SERMONDISTRIBUTOR_CONFIG_SMALL="Small" +COM_SERMONDISTRIBUTOR_CONFIG_SOUNDMANAGER="Soundmanager" COM_SERMONDISTRIBUTOR_CONFIG_SPACED="Spaced" COM_SERMONDISTRIBUTOR_CONFIG_STRIPED="Striped" COM_SERMONDISTRIBUTOR_CONFIG_TABLE="Table" @@ -666,6 +672,7 @@ COM_SERMONDISTRIBUTOR_CONFIG_YES="Yes" COM_SERMONDISTRIBUTOR_CONFIG_ZIP=".zip" COM_SERMONDISTRIBUTOR_CONTRIBUTOR="Contributor" COM_SERMONDISTRIBUTOR_CONTRIBUTORS="Contributors" +COM_SERMONDISTRIBUTOR_CREATE_NEW_S="Create New %s" COM_SERMONDISTRIBUTOR_DASH="Dashboard" COM_SERMONDISTRIBUTOR_DASHBOARD="Sermon Distributor Dashboard" COM_SERMONDISTRIBUTOR_DASHBOARD_HELP_DOCUMENTS="Help Documents

" @@ -684,6 +691,7 @@ COM_SERMONDISTRIBUTOR_EDIT_CREATED_BY="Edit Created By" COM_SERMONDISTRIBUTOR_EDIT_CREATED_BY_DESC=" Allows users in this group to edit created by." COM_SERMONDISTRIBUTOR_EDIT_CREATED_DATE="Edit Created Date" COM_SERMONDISTRIBUTOR_EDIT_CREATED_DATE_DESC=" Allows users in this group to edit created date." +COM_SERMONDISTRIBUTOR_EDIT_S="Edit %s" COM_SERMONDISTRIBUTOR_EDIT_VERSIONS="Edit Version" COM_SERMONDISTRIBUTOR_EDIT_VERSIONS_DESC=" Allows users in this group to edit versions." COM_SERMONDISTRIBUTOR_EXPORT_DATA="Export Data" @@ -740,6 +748,7 @@ COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ADMIN_VIEW_DESCRIPTION="Select the view bein COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ADMIN_VIEW_LABEL="Admin Views" COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ALIAS="Alias" COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ALIAS_HINT="Auto-generated from name" +COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ALIAS_LABEL="Alias" COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ALL="All" COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ARTICLE="Article" COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ARTICLE_LABEL="Article" @@ -896,6 +905,7 @@ COM_SERMONDISTRIBUTOR_PREACHER_ACCESS_SITE="Preacher (Site) Access" COM_SERMONDISTRIBUTOR_PREACHER_ACCESS_SITE_DESC=" Allows the users in this group to access site preacher." COM_SERMONDISTRIBUTOR_PREACHER_ALIAS="Alias" COM_SERMONDISTRIBUTOR_PREACHER_ALIAS_HINT="Auto-generated from name" +COM_SERMONDISTRIBUTOR_PREACHER_ALIAS_LABEL="Alias" COM_SERMONDISTRIBUTOR_PREACHER_CREATED_BY_DESC="The user that created the Preacher." COM_SERMONDISTRIBUTOR_PREACHER_CREATED_BY_LABEL="Created by" COM_SERMONDISTRIBUTOR_PREACHER_CREATED_DATE_DESC="The date Preacher was created." @@ -937,6 +947,7 @@ COM_SERMONDISTRIBUTOR_SERIES_ACCESS_SITE="Series (Site) Access" COM_SERMONDISTRIBUTOR_SERIES_ACCESS_SITE_DESC=" Allows the users in this group to access site series." COM_SERMONDISTRIBUTOR_SERIES_ALIAS="Alias" COM_SERMONDISTRIBUTOR_SERIES_ALIAS_HINT="Auto-generated from name" +COM_SERMONDISTRIBUTOR_SERIES_ALIAS_LABEL="Alias" COM_SERMONDISTRIBUTOR_SERIES_CREATED_BY_DESC="The user that created the Series." COM_SERMONDISTRIBUTOR_SERIES_CREATED_BY_LABEL="Created by" COM_SERMONDISTRIBUTOR_SERIES_CREATED_DATE_DESC="The date Series was created." @@ -1074,6 +1085,7 @@ COM_SERMONDISTRIBUTOR_SERMON_ACCESS_SITE="Sermon (Site) Access" COM_SERMONDISTRIBUTOR_SERMON_ACCESS_SITE_DESC=" Allows the users in this group to access site sermon." COM_SERMONDISTRIBUTOR_SERMON_ALIAS="Alias" COM_SERMONDISTRIBUTOR_SERMON_ALIAS_HINT="Auto-generated from name" +COM_SERMONDISTRIBUTOR_SERMON_ALIAS_LABEL="Alias" COM_SERMONDISTRIBUTOR_SERMON_AUTOMATIC="Automatic" COM_SERMONDISTRIBUTOR_SERMON_AUTO_SERMONS="Auto Sermons" COM_SERMONDISTRIBUTOR_SERMON_BUILD="Build" diff --git a/admin/language/en-GB/en-GB.com_sermondistributor.sys.ini b/admin/language/en-GB/en-GB.com_sermondistributor.sys.ini index 2b3710b2..b2552e76 100644 --- a/admin/language/en-GB/en-GB.com_sermondistributor.sys.ini +++ b/admin/language/en-GB/en-GB.com_sermondistributor.sys.ini @@ -1,4 +1,4 @@ -COM_SERMONDISTRIBUTOR="Sermon Distributor Configuration" +COM_SERMONDISTRIBUTOR="Sermon Distributor" COM_SERMONDISTRIBUTOR_CONFIGURATION="Sermon Distributor Configuration" COM_SERMONDISTRIBUTOR_MENU="» Sermon Distributor" COM_SERMONDISTRIBUTOR_MENU_CATEGORIES_DESC="All categories that are published" diff --git a/admin/layouts/batchselection.php b/admin/layouts/batchselection.php index 2eed8835..90206802 100644 --- a/admin/layouts/batchselection.php +++ b/admin/layouts/batchselection.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage batchselection.php diff --git a/admin/layouts/help_document/details_above.php b/admin/layouts/help_document/details_above.php index e49ba79c..0d4d05cb 100644 --- a/admin/layouts/help_document/details_above.php +++ b/admin/layouts/help_document/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_above.php diff --git a/admin/layouts/help_document/details_fullwidth.php b/admin/layouts/help_document/details_fullwidth.php index ebe49812..b49a84c9 100644 --- a/admin/layouts/help_document/details_fullwidth.php +++ b/admin/layouts/help_document/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_fullwidth.php diff --git a/admin/layouts/help_document/details_left.php b/admin/layouts/help_document/details_left.php index f6d84b58..ff32d940 100644 --- a/admin/layouts/help_document/details_left.php +++ b/admin/layouts/help_document/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_left.php diff --git a/admin/layouts/help_document/details_right.php b/admin/layouts/help_document/details_right.php index bfa3d813..ce5441b0 100644 --- a/admin/layouts/help_document/details_right.php +++ b/admin/layouts/help_document/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_right.php diff --git a/admin/layouts/help_document/details_under.php b/admin/layouts/help_document/details_under.php index 0d21ecc5..e7e75f6d 100644 --- a/admin/layouts/help_document/details_under.php +++ b/admin/layouts/help_document/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_under.php diff --git a/admin/layouts/help_document/metadata.php b/admin/layouts/help_document/metadata.php index c4331cae..cccfd419 100644 --- a/admin/layouts/help_document/metadata.php +++ b/admin/layouts/help_document/metadata.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage metadata.php diff --git a/admin/layouts/help_document/publishing.php b/admin/layouts/help_document/publishing.php index 7602c84c..898a1286 100644 --- a/admin/layouts/help_document/publishing.php +++ b/admin/layouts/help_document/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage publishing.php diff --git a/admin/layouts/preacher/details_above.php b/admin/layouts/preacher/details_above.php index 4f39bdc4..59f95f79 100644 --- a/admin/layouts/preacher/details_above.php +++ b/admin/layouts/preacher/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_above.php diff --git a/admin/layouts/preacher/details_fullwidth.php b/admin/layouts/preacher/details_fullwidth.php index 72beb576..aba2deec 100644 --- a/admin/layouts/preacher/details_fullwidth.php +++ b/admin/layouts/preacher/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_fullwidth.php diff --git a/admin/layouts/preacher/details_left.php b/admin/layouts/preacher/details_left.php index a5f6b9a2..185cf8ed 100644 --- a/admin/layouts/preacher/details_left.php +++ b/admin/layouts/preacher/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_left.php diff --git a/admin/layouts/preacher/details_right.php b/admin/layouts/preacher/details_right.php index 12867cdc..f3d45fae 100644 --- a/admin/layouts/preacher/details_right.php +++ b/admin/layouts/preacher/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_right.php diff --git a/admin/layouts/preacher/metadata.php b/admin/layouts/preacher/metadata.php index c4331cae..cccfd419 100644 --- a/admin/layouts/preacher/metadata.php +++ b/admin/layouts/preacher/metadata.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage metadata.php diff --git a/admin/layouts/preacher/publishing.php b/admin/layouts/preacher/publishing.php index 7602c84c..898a1286 100644 --- a/admin/layouts/preacher/publishing.php +++ b/admin/layouts/preacher/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage publishing.php diff --git a/admin/layouts/preacher/sermons_fullwidth.php b/admin/layouts/preacher/sermons_fullwidth.php index 55e8a4f8..7aeed496 100644 --- a/admin/layouts/preacher/sermons_fullwidth.php +++ b/admin/layouts/preacher/sermons_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermons_fullwidth.php diff --git a/admin/layouts/series/details_above.php b/admin/layouts/series/details_above.php index 4f39bdc4..59f95f79 100644 --- a/admin/layouts/series/details_above.php +++ b/admin/layouts/series/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_above.php diff --git a/admin/layouts/series/details_fullwidth.php b/admin/layouts/series/details_fullwidth.php index 72beb576..aba2deec 100644 --- a/admin/layouts/series/details_fullwidth.php +++ b/admin/layouts/series/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_fullwidth.php diff --git a/admin/layouts/series/details_left.php b/admin/layouts/series/details_left.php index a5f6b9a2..185cf8ed 100644 --- a/admin/layouts/series/details_left.php +++ b/admin/layouts/series/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_left.php diff --git a/admin/layouts/series/details_right.php b/admin/layouts/series/details_right.php index c786435a..bf5c194a 100644 --- a/admin/layouts/series/details_right.php +++ b/admin/layouts/series/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_right.php diff --git a/admin/layouts/series/metadata.php b/admin/layouts/series/metadata.php index c4331cae..cccfd419 100644 --- a/admin/layouts/series/metadata.php +++ b/admin/layouts/series/metadata.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage metadata.php diff --git a/admin/layouts/series/publishing.php b/admin/layouts/series/publishing.php index 7602c84c..898a1286 100644 --- a/admin/layouts/series/publishing.php +++ b/admin/layouts/series/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage publishing.php diff --git a/admin/layouts/series/sermons_fullwidth.php b/admin/layouts/series/sermons_fullwidth.php index e8b1b568..1940f75b 100644 --- a/admin/layouts/series/sermons_fullwidth.php +++ b/admin/layouts/series/sermons_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermons_fullwidth.php diff --git a/admin/layouts/sermon/details_above.php b/admin/layouts/sermon/details_above.php index 81b73e56..3aeba862 100644 --- a/admin/layouts/sermon/details_above.php +++ b/admin/layouts/sermon/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_above.php diff --git a/admin/layouts/sermon/details_fullwidth.php b/admin/layouts/sermon/details_fullwidth.php index 72beb576..aba2deec 100644 --- a/admin/layouts/sermon/details_fullwidth.php +++ b/admin/layouts/sermon/details_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_fullwidth.php diff --git a/admin/layouts/sermon/details_left.php b/admin/layouts/sermon/details_left.php index d76c1e19..678f1eb1 100644 --- a/admin/layouts/sermon/details_left.php +++ b/admin/layouts/sermon/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_left.php diff --git a/admin/layouts/sermon/details_right.php b/admin/layouts/sermon/details_right.php index facb27cb..b83e4df6 100644 --- a/admin/layouts/sermon/details_right.php +++ b/admin/layouts/sermon/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_right.php diff --git a/admin/layouts/sermon/details_under.php b/admin/layouts/sermon/details_under.php index 1afdc185..1cd5ff2a 100644 --- a/admin/layouts/sermon/details_under.php +++ b/admin/layouts/sermon/details_under.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_under.php diff --git a/admin/layouts/sermon/files_fullwidth.php b/admin/layouts/sermon/files_fullwidth.php index 9018d03c..a7471787 100644 --- a/admin/layouts/sermon/files_fullwidth.php +++ b/admin/layouts/sermon/files_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage files_fullwidth.php diff --git a/admin/layouts/sermon/metadata.php b/admin/layouts/sermon/metadata.php index c4331cae..cccfd419 100644 --- a/admin/layouts/sermon/metadata.php +++ b/admin/layouts/sermon/metadata.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage metadata.php diff --git a/admin/layouts/sermon/publishing.php b/admin/layouts/sermon/publishing.php index 7602c84c..898a1286 100644 --- a/admin/layouts/sermon/publishing.php +++ b/admin/layouts/sermon/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage publishing.php diff --git a/admin/layouts/sermon/stastics_fullwidth.php b/admin/layouts/sermon/stastics_fullwidth.php index 01a48ea2..0c8c506c 100644 --- a/admin/layouts/sermon/stastics_fullwidth.php +++ b/admin/layouts/sermon/stastics_fullwidth.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage stastics_fullwidth.php diff --git a/admin/layouts/statistic/details_above.php b/admin/layouts/statistic/details_above.php index e02ada07..24e4b6f7 100644 --- a/admin/layouts/statistic/details_above.php +++ b/admin/layouts/statistic/details_above.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_above.php diff --git a/admin/layouts/statistic/details_left.php b/admin/layouts/statistic/details_left.php index 3521ae37..5f92f847 100644 --- a/admin/layouts/statistic/details_left.php +++ b/admin/layouts/statistic/details_left.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_left.php diff --git a/admin/layouts/statistic/details_right.php b/admin/layouts/statistic/details_right.php index 059e296e..1a53617d 100644 --- a/admin/layouts/statistic/details_right.php +++ b/admin/layouts/statistic/details_right.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage details_right.php diff --git a/admin/layouts/statistic/metadata.php b/admin/layouts/statistic/metadata.php index c4331cae..cccfd419 100644 --- a/admin/layouts/statistic/metadata.php +++ b/admin/layouts/statistic/metadata.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage metadata.php diff --git a/admin/layouts/statistic/publishing.php b/admin/layouts/statistic/publishing.php index 7602c84c..898a1286 100644 --- a/admin/layouts/statistic/publishing.php +++ b/admin/layouts/statistic/publishing.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage publishing.php diff --git a/admin/models/ajax.php b/admin/models/ajax.php index f51934d7..416f9b65 100644 --- a/admin/models/ajax.php +++ b/admin/models/ajax.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage ajax.php @@ -43,7 +43,7 @@ class SermondistributorModelAjax extends JModelList } - // [Interpretation 8239] Used in sermon + // [Interpretation 8452] Used in sermon /** * Check and Set Dropbox local listing **/ diff --git a/admin/models/fields/articles.php b/admin/models/fields/articles.php index f48f92b1..a86ab0ca 100644 --- a/admin/models/fields/articles.php +++ b/admin/models/fields/articles.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage articles.php @@ -50,37 +50,87 @@ class JFormFieldArticles extends JFormFieldList */ protected function getInput() { - // [Interpretation 7009] see if we should add buttons + // [Interpretation 7157] see if we should add buttons $setButton = $this->getAttribute('button'); - // [Interpretation 7011] get html + // [Interpretation 7159] get html $html = parent::getInput(); - // [Interpretation 7013] if true set button + // [Interpretation 7161] if true set button if ($setButton === 'true') { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // [Interpretation 7167] get the input from url + $jinput = JFactory::getApplication()->input; + // [Interpretation 7169] get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // [Interpretation 7174] check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // [Interpretation 7179] only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } $user = JFactory::getUser(); - // [Interpretation 7017] only add if user allowed to create article + // [Interpretation 7184] only add if user allowed to create article if ($user->authorise('core.create', 'com_sermondistributor')) { - // [Interpretation 7035] get the input from url - $jinput = JFactory::getApplication()->input; - // [Interpretation 7037] get the view name & id - $values = $jinput->getArray(array( - 'id' => 'int', - 'view' => 'word' - )); - // [Interpretation 7042] check if new item - $ref = ''; - if (!is_null($values['id']) && strlen($values['view'])) - { - // [Interpretation 7046] only load referal if not new item. - $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; - } - // [Interpretation 7049] build the button - $button = ' - ' . JText::_('COM_SERMONDISTRIBUTOR_NEW') . ''; - // [Interpretation 7053] return the button attached to input field - return $html . $button; + '; + } + // [Interpretation 7207] only add if user allowed to edit article + if (($buttonName == 'article' || $buttonName == 'articles') && $user->authorise('core.edit', 'com_sermondistributor')) + { + // [Interpretation 7218] build edit button + $button[] = ''; + // [Interpretation 7221] build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_sermondistributor&view=articles&task=article.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // [Interpretation 7248] check if button was created for article field. + if (SermondistributorHelper::checkArray($button)) + { + // [Interpretation 7251] Add some final script + $script[] = " + jQuery(document).ready(function() { + jQuery('#jform_".$buttonName."').closest('.control-group').addClass('input-append'); + });"; + // [Interpretation 7256] Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // [Interpretation 7259] return the button attached to input field. + return $html . implode('',$button); } } return $html; diff --git a/admin/models/fields/dropboxfiles.php b/admin/models/fields/dropboxfiles.php index d011710f..f1fa25e9 100644 --- a/admin/models/fields/dropboxfiles.php +++ b/admin/models/fields/dropboxfiles.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage dropboxfiles.php @@ -50,37 +50,87 @@ class JFormFieldDropboxfiles extends JFormFieldList */ protected function getInput() { - // [Interpretation 7009] see if we should add buttons + // [Interpretation 7157] see if we should add buttons $setButton = $this->getAttribute('button'); - // [Interpretation 7011] get html + // [Interpretation 7159] get html $html = parent::getInput(); - // [Interpretation 7013] if true set button + // [Interpretation 7161] if true set button if ($setButton === 'true') { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // [Interpretation 7167] get the input from url + $jinput = JFactory::getApplication()->input; + // [Interpretation 7169] get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // [Interpretation 7174] check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // [Interpretation 7179] only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } $user = JFactory::getUser(); - // [Interpretation 7017] only add if user allowed to create + // [Interpretation 7184] only add if user allowed to create if ($user->authorise('core.create', 'com_sermondistributor')) { - // [Interpretation 7035] get the input from url - $jinput = JFactory::getApplication()->input; - // [Interpretation 7037] get the view name & id - $values = $jinput->getArray(array( - 'id' => 'int', - 'view' => 'word' - )); - // [Interpretation 7042] check if new item - $ref = ''; - if (!is_null($values['id']) && strlen($values['view'])) - { - // [Interpretation 7046] only load referal if not new item. - $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; - } - // [Interpretation 7049] build the button - $button = ' - ' . JText::_('COM_SERMONDISTRIBUTOR_NEW') . ''; - // [Interpretation 7053] return the button attached to input field - return $html . $button; + '; + } + // [Interpretation 7207] only add if user allowed to edit + if (($buttonName == '' || $buttonName == '') && $user->authorise('core.edit', 'com_sermondistributor')) + { + // [Interpretation 7218] build edit button + $button[] = ''; + // [Interpretation 7221] build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_sermondistributor&view=&task=.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // [Interpretation 7248] check if button was created for field. + if (SermondistributorHelper::checkArray($button)) + { + // [Interpretation 7251] Add some final script + $script[] = " + jQuery(document).ready(function() { + jQuery('#jform_".$buttonName."').closest('.control-group').addClass('input-append'); + });"; + // [Interpretation 7256] Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // [Interpretation 7259] return the button attached to input field. + return $html . implode('',$button); } } return $html; diff --git a/admin/models/fields/localfiles.php b/admin/models/fields/localfiles.php index 475e31f7..63fcc98d 100644 --- a/admin/models/fields/localfiles.php +++ b/admin/models/fields/localfiles.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage localfiles.php @@ -50,37 +50,87 @@ class JFormFieldLocalfiles extends JFormFieldList */ protected function getInput() { - // [Interpretation 7009] see if we should add buttons + // [Interpretation 7157] see if we should add buttons $setButton = $this->getAttribute('button'); - // [Interpretation 7011] get html + // [Interpretation 7159] get html $html = parent::getInput(); - // [Interpretation 7013] if true set button + // [Interpretation 7161] if true set button if ($setButton === 'true') { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // [Interpretation 7167] get the input from url + $jinput = JFactory::getApplication()->input; + // [Interpretation 7169] get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // [Interpretation 7174] check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // [Interpretation 7179] only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } $user = JFactory::getUser(); - // [Interpretation 7017] only add if user allowed to create + // [Interpretation 7184] only add if user allowed to create if ($user->authorise('core.create', 'com_sermondistributor')) { - // [Interpretation 7035] get the input from url - $jinput = JFactory::getApplication()->input; - // [Interpretation 7037] get the view name & id - $values = $jinput->getArray(array( - 'id' => 'int', - 'view' => 'word' - )); - // [Interpretation 7042] check if new item - $ref = ''; - if (!is_null($values['id']) && strlen($values['view'])) - { - // [Interpretation 7046] only load referal if not new item. - $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; - } - // [Interpretation 7049] build the button - $button = ' - ' . JText::_('COM_SERMONDISTRIBUTOR_NEW') . ''; - // [Interpretation 7053] return the button attached to input field - return $html . $button; + '; + } + // [Interpretation 7207] only add if user allowed to edit + if (($buttonName == '' || $buttonName == '') && $user->authorise('core.edit', 'com_sermondistributor')) + { + // [Interpretation 7218] build edit button + $button[] = ''; + // [Interpretation 7221] build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_sermondistributor&view=&task=.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // [Interpretation 7248] check if button was created for field. + if (SermondistributorHelper::checkArray($button)) + { + // [Interpretation 7251] Add some final script + $script[] = " + jQuery(document).ready(function() { + jQuery('#jform_".$buttonName."').closest('.control-group').addClass('input-append'); + });"; + // [Interpretation 7256] Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // [Interpretation 7259] return the button attached to input field. + return $html . implode('',$button); } } return $html; diff --git a/admin/models/fields/preachers.php b/admin/models/fields/preachers.php index ae5d9c7c..1d9e4823 100644 --- a/admin/models/fields/preachers.php +++ b/admin/models/fields/preachers.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preachers.php @@ -50,37 +50,87 @@ class JFormFieldPreachers extends JFormFieldList */ protected function getInput() { - // [Interpretation 7009] see if we should add buttons + // [Interpretation 7157] see if we should add buttons $setButton = $this->getAttribute('button'); - // [Interpretation 7011] get html + // [Interpretation 7159] get html $html = parent::getInput(); - // [Interpretation 7013] if true set button + // [Interpretation 7161] if true set button if ($setButton === 'true') { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // [Interpretation 7167] get the input from url + $jinput = JFactory::getApplication()->input; + // [Interpretation 7169] get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // [Interpretation 7174] check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // [Interpretation 7179] only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } $user = JFactory::getUser(); - // [Interpretation 7017] only add if user allowed to create preacher + // [Interpretation 7184] only add if user allowed to create preacher if ($user->authorise('preacher.create', 'com_sermondistributor')) { - // [Interpretation 7035] get the input from url - $jinput = JFactory::getApplication()->input; - // [Interpretation 7037] get the view name & id - $values = $jinput->getArray(array( - 'id' => 'int', - 'view' => 'word' - )); - // [Interpretation 7042] check if new item - $ref = ''; - if (!is_null($values['id']) && strlen($values['view'])) - { - // [Interpretation 7046] only load referal if not new item. - $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; - } - // [Interpretation 7049] build the button - $button = ' - ' . JText::_('COM_SERMONDISTRIBUTOR_NEW') . ''; - // [Interpretation 7053] return the button attached to input field - return $html . $button; + '; + } + // [Interpretation 7207] only add if user allowed to edit preacher + if (($buttonName == 'preacher' || $buttonName == 'preachers') && $user->authorise('preacher.edit', 'com_sermondistributor')) + { + // [Interpretation 7218] build edit button + $button[] = ''; + // [Interpretation 7221] build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_sermondistributor&view=preachers&task=preacher.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // [Interpretation 7248] check if button was created for preacher field. + if (SermondistributorHelper::checkArray($button)) + { + // [Interpretation 7251] Add some final script + $script[] = " + jQuery(document).ready(function() { + jQuery('#jform_".$buttonName."').closest('.control-group').addClass('input-append'); + });"; + // [Interpretation 7256] Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // [Interpretation 7259] return the button attached to input field. + return $html . implode('',$button); } } return $html; diff --git a/admin/models/fields/series.php b/admin/models/fields/series.php index 9afa54c0..0f962759 100644 --- a/admin/models/fields/series.php +++ b/admin/models/fields/series.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series.php @@ -50,37 +50,87 @@ class JFormFieldSeries extends JFormFieldList */ protected function getInput() { - // [Interpretation 7009] see if we should add buttons + // [Interpretation 7157] see if we should add buttons $setButton = $this->getAttribute('button'); - // [Interpretation 7011] get html + // [Interpretation 7159] get html $html = parent::getInput(); - // [Interpretation 7013] if true set button + // [Interpretation 7161] if true set button if ($setButton === 'true') { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // [Interpretation 7167] get the input from url + $jinput = JFactory::getApplication()->input; + // [Interpretation 7169] get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // [Interpretation 7174] check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // [Interpretation 7179] only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } $user = JFactory::getUser(); - // [Interpretation 7017] only add if user allowed to create series + // [Interpretation 7184] only add if user allowed to create series if ($user->authorise('series.create', 'com_sermondistributor')) { - // [Interpretation 7035] get the input from url - $jinput = JFactory::getApplication()->input; - // [Interpretation 7037] get the view name & id - $values = $jinput->getArray(array( - 'id' => 'int', - 'view' => 'word' - )); - // [Interpretation 7042] check if new item - $ref = ''; - if (!is_null($values['id']) && strlen($values['view'])) - { - // [Interpretation 7046] only load referal if not new item. - $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; - } - // [Interpretation 7049] build the button - $button = ' - ' . JText::_('COM_SERMONDISTRIBUTOR_NEW') . ''; - // [Interpretation 7053] return the button attached to input field - return $html . $button; + '; + } + // [Interpretation 7207] only add if user allowed to edit series + if (($buttonName == 'series' || $buttonName == 'all_series') && $user->authorise('series.edit', 'com_sermondistributor')) + { + // [Interpretation 7218] build edit button + $button[] = ''; + // [Interpretation 7221] build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_sermondistributor&view=all_series&task=series.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // [Interpretation 7248] check if button was created for series field. + if (SermondistributorHelper::checkArray($button)) + { + // [Interpretation 7251] Add some final script + $script[] = " + jQuery(document).ready(function() { + jQuery('#jform_".$buttonName."').closest('.control-group').addClass('input-append'); + });"; + // [Interpretation 7256] Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // [Interpretation 7259] return the button attached to input field. + return $html . implode('',$button); } } return $html; diff --git a/admin/models/fields/sermon.php b/admin/models/fields/sermon.php index 5e2bfdb0..1c6ca0ed 100644 --- a/admin/models/fields/sermon.php +++ b/admin/models/fields/sermon.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermon.php @@ -50,37 +50,87 @@ class JFormFieldSermon extends JFormFieldList */ protected function getInput() { - // [Interpretation 7009] see if we should add buttons + // [Interpretation 7157] see if we should add buttons $setButton = $this->getAttribute('button'); - // [Interpretation 7011] get html + // [Interpretation 7159] get html $html = parent::getInput(); - // [Interpretation 7013] if true set button + // [Interpretation 7161] if true set button if ($setButton === 'true') { + $button = array(); + $script = array(); + $buttonName = $this->getAttribute('name'); + // [Interpretation 7167] get the input from url + $jinput = JFactory::getApplication()->input; + // [Interpretation 7169] get the view name & id + $values = $jinput->getArray(array( + 'id' => 'int', + 'view' => 'word' + )); + // [Interpretation 7174] check if new item + $ref = ''; + $refJ = ''; + if (!is_null($values['id']) && strlen($values['view'])) + { + // [Interpretation 7179] only load referal if not new item. + $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; + $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + } $user = JFactory::getUser(); - // [Interpretation 7017] only add if user allowed to create sermon + // [Interpretation 7184] only add if user allowed to create sermon if ($user->authorise('sermon.create', 'com_sermondistributor')) { - // [Interpretation 7035] get the input from url - $jinput = JFactory::getApplication()->input; - // [Interpretation 7037] get the view name & id - $values = $jinput->getArray(array( - 'id' => 'int', - 'view' => 'word' - )); - // [Interpretation 7042] check if new item - $ref = ''; - if (!is_null($values['id']) && strlen($values['view'])) - { - // [Interpretation 7046] only load referal if not new item. - $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; - } - // [Interpretation 7049] build the button - $button = ' - ' . JText::_('COM_SERMONDISTRIBUTOR_NEW') . ''; - // [Interpretation 7053] return the button attached to input field - return $html . $button; + '; + } + // [Interpretation 7207] only add if user allowed to edit sermon + if (($buttonName == 'sermon' || $buttonName == 'sermons') && $user->authorise('sermon.edit', 'com_sermondistributor')) + { + // [Interpretation 7218] build edit button + $button[] = ''; + // [Interpretation 7221] build script + $script[] = " + jQuery(document).ready(function() { + jQuery('#adminForm').on('change', '#jform_".$buttonName."',function (e) { + e.preventDefault(); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + var ".$buttonName."Value = jQuery('#jform_".$buttonName."').val(); + ".$buttonName."Button(".$buttonName."Value); + }); + function ".$buttonName."Button(value) { + if (value > 0) { + // hide the create button + jQuery('#".$buttonName."Create').hide(); + // show edit button + jQuery('#".$buttonName."Edit').show(); + var url = 'index.php?option=com_sermondistributor&view=sermons&task=sermon.edit&id='+value+'".$refJ."'; + jQuery('#".$buttonName."Edit').attr('href', url); + } else { + // show the create button + jQuery('#".$buttonName."Create').show(); + // hide edit button + jQuery('#".$buttonName."Edit').hide(); + } + }"; + } + // [Interpretation 7248] check if button was created for sermon field. + if (SermondistributorHelper::checkArray($button)) + { + // [Interpretation 7251] Add some final script + $script[] = " + jQuery(document).ready(function() { + jQuery('#jform_".$buttonName."').closest('.control-group').addClass('input-append'); + });"; + // [Interpretation 7256] Load the needed script. + $document = JFactory::getDocument(); + $document->addScriptDeclaration(implode(' ',$script)); + // [Interpretation 7259] return the button attached to input field. + return $html . implode('',$button); } } return $html; diff --git a/admin/models/forms/help_document.js b/admin/models/forms/help_document.js index a6c87c87..01b645fc 100644 --- a/admin/models/forms/help_document.js +++ b/admin/models/forms/help_document.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help_document.js @@ -53,7 +53,7 @@ jQuery(document).ready(function() // the vvvvvwe function function vvvvvwe(location_vvvvvwe) { - // [Interpretation 7326] set the function logic + // [Interpretation 7534] set the function logic if (location_vvvvvwe == 1) { jQuery('#jform_admin_view').closest('.control-group').show(); @@ -67,7 +67,7 @@ function vvvvvwe(location_vvvvvwe) // the vvvvvwf function function vvvvvwf(location_vvvvvwf) { - // [Interpretation 7326] set the function logic + // [Interpretation 7534] set the function logic if (location_vvvvvwf == 2) { jQuery('#jform_site_view').closest('.control-group').show(); @@ -94,7 +94,7 @@ function vvvvvwg(type_vvvvvwg) var type = type_vvvvvwg.some(type_vvvvvwg_SomeFunc); - // [Interpretation 7304] set this function logic + // [Interpretation 7512] set this function logic if (type) { jQuery('#jform_url').closest('.control-group').show(); @@ -125,7 +125,7 @@ function vvvvvwg(type_vvvvvwg) // the vvvvvwg Some function function type_vvvvvwg_SomeFunc(type_vvvvvwg) { - // [Interpretation 7291] set the function logic + // [Interpretation 7499] set the function logic if (type_vvvvvwg == 3) { return true; @@ -149,7 +149,7 @@ function vvvvvwh(type_vvvvvwh) var type = type_vvvvvwh.some(type_vvvvvwh_SomeFunc); - // [Interpretation 7304] set this function logic + // [Interpretation 7512] set this function logic if (type) { jQuery('#jform_article').closest('.control-group').show(); @@ -180,7 +180,7 @@ function vvvvvwh(type_vvvvvwh) // the vvvvvwh Some function function type_vvvvvwh_SomeFunc(type_vvvvvwh) { - // [Interpretation 7291] set the function logic + // [Interpretation 7499] set the function logic if (type_vvvvvwh == 1) { return true; @@ -204,7 +204,7 @@ function vvvvvwi(type_vvvvvwi) var type = type_vvvvvwi.some(type_vvvvvwi_SomeFunc); - // [Interpretation 7304] set this function logic + // [Interpretation 7512] set this function logic if (type) { jQuery('#jform_content-lbl').closest('.control-group').show(); @@ -235,7 +235,7 @@ function vvvvvwi(type_vvvvvwi) // the vvvvvwi Some function function type_vvvvvwi_SomeFunc(type_vvvvvwi) { - // [Interpretation 7291] set the function logic + // [Interpretation 7499] set the function logic if (type_vvvvvwi == 2) { return true; @@ -246,7 +246,7 @@ function type_vvvvvwi_SomeFunc(type_vvvvvwi) // the vvvvvwj function function vvvvvwj(target_vvvvvwj) { - // [Interpretation 7326] set the function logic + // [Interpretation 7534] set the function logic if (target_vvvvvwj == 1) { jQuery('#jform_groups').closest('.control-group').show(); diff --git a/admin/models/forms/help_document.xml b/admin/models/forms/help_document.xml index 7c330d97..d1b7560c 100644 --- a/admin/models/forms/help_document.xml +++ b/admin/models/forms/help_document.xml @@ -209,7 +209,7 @@ - +
- + - + - +
- + - + - +
- + - + - +
- + - + - +
- + - + groups)) { - // [Interpretation 3187] JSON Decode groups. + // [Interpretation 3267] JSON Decode groups. $item->groups = json_decode($item->groups,true); } @@ -122,7 +122,7 @@ class SermondistributorModelHelp_document extends JModelAdmin * @since 1.6 */ public function getForm($data = array(), $loadData = true) - { // [Interpretation 8889] Get the form. + { // [Interpretation 9102] Get the form. $form = $this->loadForm('com_sermondistributor.help_document', 'help_document', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) @@ -132,12 +132,12 @@ class SermondistributorModelHelp_document extends JModelAdmin $jinput = JFactory::getApplication()->input; - // [Interpretation 8974] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. + // [Interpretation 9187] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. if ($jinput->get('a_id')) { $id = $jinput->get('a_id', 0, 'INT'); } - // [Interpretation 8979] The back end uses id so we use that the rest of the time and set it to 0 by default. + // [Interpretation 9192] The back end uses id so we use that the rest of the time and set it to 0 by default. else { $id = $jinput->get('id', 0, 'INT'); @@ -145,52 +145,52 @@ class SermondistributorModelHelp_document extends JModelAdmin $user = JFactory::getUser(); - // [Interpretation 8985] Check for existing item. - // [Interpretation 8986] Modify the form based on Edit State access controls. + // [Interpretation 9198] Check for existing item. + // [Interpretation 9199] Modify the form based on Edit State access controls. if ($id != 0 && (!$user->authorise('help_document.edit.state', 'com_sermondistributor.help_document.' . (int) $id)) || ($id == 0 && !$user->authorise('help_document.edit.state', 'com_sermondistributor'))) { - // [Interpretation 8999] Disable fields for display. + // [Interpretation 9212] Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); - // [Interpretation 9002] Disable fields while saving. + // [Interpretation 9215] Disable fields while saving. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } - // [Interpretation 9007] If this is a new item insure the greated by is set. + // [Interpretation 9220] If this is a new item insure the greated by is set. if (0 == $id) { - // [Interpretation 9010] Set the created_by to this user + // [Interpretation 9223] Set the created_by to this user $form->setValue('created_by', null, $user->id); } - // [Interpretation 9013] Modify the form based on Edit Creaded By access controls. + // [Interpretation 9226] Modify the form based on Edit Creaded By access controls. if (!$user->authorise('core.edit.created_by', 'com_sermondistributor')) { - // [Interpretation 9025] Disable fields for display. + // [Interpretation 9238] Disable fields for display. $form->setFieldAttribute('created_by', 'disabled', 'true'); - // [Interpretation 9027] Disable fields for display. + // [Interpretation 9240] Disable fields for display. $form->setFieldAttribute('created_by', 'readonly', 'true'); - // [Interpretation 9029] Disable fields while saving. + // [Interpretation 9242] Disable fields while saving. $form->setFieldAttribute('created_by', 'filter', 'unset'); } - // [Interpretation 9032] Modify the form based on Edit Creaded Date access controls. + // [Interpretation 9245] Modify the form based on Edit Creaded Date access controls. if (!$user->authorise('core.edit.created', 'com_sermondistributor')) { - // [Interpretation 9044] Disable fields for display. + // [Interpretation 9257] Disable fields for display. $form->setFieldAttribute('created', 'disabled', 'true'); - // [Interpretation 9046] Disable fields while saving. + // [Interpretation 9259] Disable fields while saving. $form->setFieldAttribute('created', 'filter', 'unset'); } - // [Interpretation 9079] Only load these values if no id is found + // [Interpretation 9292] Only load these values if no id is found if (0 == $id) { - // [Interpretation 9082] Set redirected field name + // [Interpretation 9295] Set redirected field name $redirectedField = $jinput->get('ref', null, 'STRING'); - // [Interpretation 9084] Set redirected field value + // [Interpretation 9297] Set redirected field value $redirectedValue = $jinput->get('refid', 0, 'INT'); if (0 != $redirectedValue && $redirectedField) { - // [Interpretation 9088] Now set the local-redirected field default value + // [Interpretation 9301] Now set the local-redirected field default value $form->setValue($redirectedField, null, $redirectedValue); } } @@ -227,7 +227,7 @@ class SermondistributorModelHelp_document extends JModelAdmin } $user = JFactory::getUser(); - // [Interpretation 9210] The record has been set. Check the record permissions. + // [Interpretation 9423] The record has been set. Check the record permissions. return $user->authorise('help_document.delete', 'com_sermondistributor.help_document.' . (int) $record->id); } return false; @@ -249,14 +249,14 @@ class SermondistributorModelHelp_document extends JModelAdmin if ($recordId) { - // [Interpretation 9297] The record has been set. Check the record permissions. + // [Interpretation 9510] The record has been set. Check the record permissions. $permission = $user->authorise('help_document.edit.state', 'com_sermondistributor.help_document.' . (int) $recordId); if (!$permission && !is_null($permission)) { return false; } } - // [Interpretation 9314] In the absense of better information, revert to the component permissions. + // [Interpretation 9527] In the absense of better information, revert to the component permissions. return $user->authorise('help_document.edit.state', 'com_sermondistributor'); } @@ -271,7 +271,7 @@ class SermondistributorModelHelp_document extends JModelAdmin */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 9122] Check specific edit permission then general edit permission. + // [Interpretation 9335] Check specific edit permission then general edit permission. $user = JFactory::getUser(); return $user->authorise('help_document.edit', 'com_sermondistributor.help_document.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('help_document.edit', 'com_sermondistributor'); @@ -370,20 +370,20 @@ class SermondistributorModelHelp_document extends JModelAdmin */ public function validate($form, $data, $group = null) { - // [Interpretation 8088] check if the not_required field is set + // [Interpretation 8301] check if the not_required field is set if (SermondistributorHelper::checkString($data['not_required'])) { $requiredFields = (array) explode(',',(string) $data['not_required']); $requiredFields = array_unique($requiredFields); - // [Interpretation 8093] now change the required field attributes value + // [Interpretation 8306] now change the required field attributes value foreach ($requiredFields as $requiredField) { - // [Interpretation 8096] make sure there is a string value + // [Interpretation 8309] make sure there is a string value if (SermondistributorHelper::checkString($requiredField)) { - // [Interpretation 8099] change to false + // [Interpretation 8312] change to false $form->setFieldAttribute($requiredField, 'required', 'false'); - // [Interpretation 8101] also clear the data set + // [Interpretation 8314] also clear the data set $data[$requiredField] = ''; } } @@ -533,7 +533,7 @@ class SermondistributorModelHelp_document extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 4183] Set some needed variables. + // [Interpretation 4263] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -547,12 +547,12 @@ class SermondistributorModelHelp_document extends JModelAdmin return false; } - // [Interpretation 4203] get list of uniqe fields + // [Interpretation 4283] get list of uniqe fields $uniqeFields = $this->getUniqeFields(); - // [Interpretation 4205] remove move_copy from array + // [Interpretation 4285] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4208] make sure published is set + // [Interpretation 4288] make sure published is set if (!isset($values['published'])) { $values['published'] = 0; @@ -564,21 +564,21 @@ class SermondistributorModelHelp_document extends JModelAdmin $newIds = array(); - // [Interpretation 4245] Parent exists so let's proceed + // [Interpretation 4325] Parent exists so let's proceed while (!empty($pks)) { - // [Interpretation 4248] Pop the first ID off the stack + // [Interpretation 4328] Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); - // [Interpretation 4253] only allow copy if user may edit this item. + // [Interpretation 4333] only allow copy if user may edit this item. if (!$this->user->authorise('help_document.edit', $contexts[$pk])) { - // [Interpretation 4263] Not fatal error + // [Interpretation 4343] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); @@ -586,19 +586,19 @@ class SermondistributorModelHelp_document extends JModelAdmin } - // [Interpretation 4268] Check that the row actually exists + // [Interpretation 4348] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4273] Fatal error + // [Interpretation 4353] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4280] Not fatal error + // [Interpretation 4360] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } @@ -606,7 +606,7 @@ class SermondistributorModelHelp_document extends JModelAdmin list($this->table->title, $this->table->alias) = $this->_generateNewTitle($this->table->alias, $this->table->title); - // [Interpretation 4316] insert all set values + // [Interpretation 4396] insert all set values if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) @@ -618,7 +618,7 @@ class SermondistributorModelHelp_document extends JModelAdmin } } - // [Interpretation 4328] update all uniqe fields + // [Interpretation 4408] update all uniqe fields if (SermondistributorHelper::checkArray($uniqeFields)) { foreach ($uniqeFields as $uniqeField) @@ -627,13 +627,13 @@ class SermondistributorModelHelp_document extends JModelAdmin } } - // [Interpretation 4337] Reset the ID because we are making a copy + // [Interpretation 4417] Reset the ID because we are making a copy $this->table->id = 0; - // [Interpretation 4340] TODO: Deal with ordering? - // [Interpretation 4341] $this->table->ordering = 1; + // [Interpretation 4420] TODO: Deal with ordering? + // [Interpretation 4421] $this->table->ordering = 1; - // [Interpretation 4343] Check the row. + // [Interpretation 4423] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -646,7 +646,7 @@ class SermondistributorModelHelp_document extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4356] Store the row. + // [Interpretation 4436] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -654,14 +654,14 @@ class SermondistributorModelHelp_document extends JModelAdmin return false; } - // [Interpretation 4364] Get the new item ID + // [Interpretation 4444] Get the new item ID $newId = $this->table->get('id'); - // [Interpretation 4367] Add the new ID to the array + // [Interpretation 4447] Add the new ID to the array $newIds[$pk] = $newId; } - // [Interpretation 4371] Clean the cache + // [Interpretation 4451] Clean the cache $this->cleanCache(); return $newIds; @@ -682,7 +682,7 @@ class SermondistributorModelHelp_document extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 3985] Set some needed variables. + // [Interpretation 4065] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -697,15 +697,15 @@ class SermondistributorModelHelp_document extends JModelAdmin return false; } - // [Interpretation 4007] make sure published only updates if user has the permission. + // [Interpretation 4087] make sure published only updates if user has the permission. if (isset($values['published']) && !$this->canDo->get('help_document.edit.state')) { unset($values['published']); } - // [Interpretation 4020] remove move_copy from array + // [Interpretation 4100] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4041] Parent exists so we proceed + // [Interpretation 4121] Parent exists so we proceed foreach ($pks as $pk) { if (!$this->user->authorise('help_document.edit', $contexts[$pk])) @@ -715,30 +715,30 @@ class SermondistributorModelHelp_document extends JModelAdmin return false; } - // [Interpretation 4058] Check that the row actually exists + // [Interpretation 4138] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4063] Fatal error + // [Interpretation 4143] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4070] Not fatal error + // [Interpretation 4150] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } - // [Interpretation 4076] insert all set values. + // [Interpretation 4156] insert all set values. if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) { - // [Interpretation 4081] Do special action for access. + // [Interpretation 4161] Do special action for access. if ('access' == $key && strlen($value) > 0) { $this->table->$key = $value; @@ -751,7 +751,7 @@ class SermondistributorModelHelp_document extends JModelAdmin } - // [Interpretation 4093] Check the row. + // [Interpretation 4173] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -764,7 +764,7 @@ class SermondistributorModelHelp_document extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4106] Store the row. + // [Interpretation 4186] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -773,7 +773,7 @@ class SermondistributorModelHelp_document extends JModelAdmin } } - // [Interpretation 4115] Clean the cache + // [Interpretation 4195] Clean the cache $this->cleanCache(); return true; @@ -803,7 +803,7 @@ class SermondistributorModelHelp_document extends JModelAdmin $data['metadata'] = (string) $metadata; } - // [Interpretation 3297] Set the groups string to JSON string. + // [Interpretation 3377] Set the groups string to JSON string. if (isset($data['groups'])) { $data['groups'] = (string) json_encode($data['groups']); @@ -817,7 +817,7 @@ class SermondistributorModelHelp_document extends JModelAdmin $data['params'] = (string) $params; } - // [Interpretation 4397] Alter the title for save as copy + // [Interpretation 4477] Alter the title for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); @@ -840,7 +840,7 @@ class SermondistributorModelHelp_document extends JModelAdmin $data['published'] = 0; } - // [Interpretation 4424] Automatic handling of alias for empty fields + // [Interpretation 4504] Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (int) $input->get('id') == 0) { if ($data['alias'] == null) @@ -871,10 +871,10 @@ class SermondistributorModelHelp_document extends JModelAdmin } } - // [Interpretation 4463] Alter the uniqe field for save as copy + // [Interpretation 4543] Alter the uniqe field for save as copy if ($input->get('task') == 'save2copy') { - // [Interpretation 4466] Automatic handling of other uniqe fields + // [Interpretation 4546] Automatic handling of other uniqe fields $uniqeFields = $this->getUniqeFields(); if (SermondistributorHelper::checkArray($uniqeFields)) { @@ -928,7 +928,7 @@ class SermondistributorModelHelp_document extends JModelAdmin protected function _generateNewTitle($alias, $title) { - // [Interpretation 4497] Alter the title & alias + // [Interpretation 4577] Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias))) diff --git a/admin/models/help_documents.php b/admin/models/help_documents.php index 6e489d83..3c7cf74b 100644 --- a/admin/models/help_documents.php +++ b/admin/models/help_documents.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help_documents.php @@ -113,16 +113,16 @@ class SermondistributorModelHelp_documents extends JModelList */ public function getItems() { - // [Interpretation 9883] check in items + // [Interpretation 10096] check in items $this->checkInNow(); // load parent items $items = parent::getItems(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -133,7 +133,7 @@ class SermondistributorModelHelp_documents extends JModelList continue; } - // [Interpretation 10029] decode groups + // [Interpretation 10242] decode groups $groupsArray = json_decode($item->groups, true); if (SermondistributorHelper::checkArray($groupsArray)) { @@ -156,14 +156,14 @@ class SermondistributorModelHelp_documents extends JModelList } } - // [Interpretation 10224] set selection value to a translatable value + // [Interpretation 10443] set selection value to a translatable value if (SermondistributorHelper::checkArray($items)) { foreach ($items as $nr => &$item) { - // [Interpretation 10231] convert type + // [Interpretation 10450] convert type $item->type = $this->selectionTranslation($item->type, 'type'); - // [Interpretation 10231] convert location + // [Interpretation 10450] convert location $item->location = $this->selectionTranslation($item->location, 'location'); } } @@ -180,7 +180,7 @@ class SermondistributorModelHelp_documents extends JModelList */ public function selectionTranslation($value,$name) { - // [Interpretation 10257] Array of type language strings + // [Interpretation 10476] Array of type language strings if ($name == 'type') { $typeArray = array( @@ -189,20 +189,20 @@ class SermondistributorModelHelp_documents extends JModelList 2 => 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_TEXT', 3 => 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_URL' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($typeArray[$value]) && SermondistributorHelper::checkString($typeArray[$value])) { return $typeArray[$value]; } } - // [Interpretation 10257] Array of location language strings + // [Interpretation 10476] Array of location language strings if ($name == 'location') { $locationArray = array( 1 => 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ADMIN', 2 => 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_SITE' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($locationArray[$value]) && SermondistributorHelper::checkString($locationArray[$value])) { return $locationArray[$value]; @@ -218,19 +218,19 @@ class SermondistributorModelHelp_documents extends JModelList */ protected function getListQuery() { - // [Interpretation 6833] Get the user object. + // [Interpretation 6981] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6835] Create a new query object. + // [Interpretation 6983] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6838] Select some fields + // [Interpretation 6986] Select some fields $query->select('a.*'); - // [Interpretation 6845] From the sermondistributor_item table + // [Interpretation 6993] From the sermondistributor_item table $query->from($db->quoteName('#__sermondistributor_help_document', 'a')); - // [Interpretation 6859] Filter by published state + // [Interpretation 7007] Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { @@ -241,21 +241,21 @@ class SermondistributorModelHelp_documents extends JModelList $query->where('(a.published = 0 OR a.published = 1)'); } - // [Interpretation 6871] Join over the asset groups. + // [Interpretation 7019] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6874] Filter by access level. + // [Interpretation 7022] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6879] Implement View Level Access + // [Interpretation 7027] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6956] Filter by search. + // [Interpretation 7104] Filter by search. $search = $this->getState('filter.search'); if (!empty($search)) { @@ -270,28 +270,28 @@ class SermondistributorModelHelp_documents extends JModelList } } - // [Interpretation 7081] Filter by Type. + // [Interpretation 7287] Filter by Type. if ($type = $this->getState('filter.type')) { $query->where('a.type = ' . $db->quote($db->escape($type, true))); } - // [Interpretation 7081] Filter by Location. + // [Interpretation 7287] Filter by Location. if ($location = $this->getState('filter.location')) { $query->where('a.location = ' . $db->quote($db->escape($location, true))); } - // [Interpretation 7081] Filter by Admin_view. + // [Interpretation 7287] Filter by Admin_view. if ($admin_view = $this->getState('filter.admin_view')) { $query->where('a.admin_view = ' . $db->quote($db->escape($admin_view, true))); } - // [Interpretation 7081] Filter by Site_view. + // [Interpretation 7287] Filter by Site_view. if ($site_view = $this->getState('filter.site_view')) { $query->where('a.site_view = ' . $db->quote($db->escape($site_view, true))); } - // [Interpretation 6915] Add the list ordering clause. + // [Interpretation 7063] Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'a.id'); $orderDirn = $this->state->get('list.direction', 'asc'); if ($orderCol != '') @@ -309,42 +309,42 @@ class SermondistributorModelHelp_documents extends JModelList */ public function getExportData($pks) { - // [Interpretation 6623] setup the query + // [Interpretation 6718] setup the query if (SermondistributorHelper::checkArray($pks)) { - // [Interpretation 6626] Get the user object. + // [Interpretation 6721] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6628] Create a new query object. + // [Interpretation 6723] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6631] Select some fields + // [Interpretation 6726] Select some fields $query->select('a.*'); - // [Interpretation 6633] From the sermondistributor_help_document table + // [Interpretation 6728] From the sermondistributor_help_document table $query->from($db->quoteName('#__sermondistributor_help_document', 'a')); $query->where('a.id IN (' . implode(',',$pks) . ')'); - // [Interpretation 6643] Implement View Level Access + // [Interpretation 6738] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6650] Order the results by ordering + // [Interpretation 6745] Order the results by ordering $query->order('a.ordering ASC'); - // [Interpretation 6652] Load the items + // [Interpretation 6747] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -355,13 +355,13 @@ class SermondistributorModelHelp_documents extends JModelList continue; } - // [Interpretation 10171] unset the values we don't want exported. + // [Interpretation 10390] unset the values we don't want exported. unset($item->asset_id); unset($item->checked_out); unset($item->checked_out_time); } } - // [Interpretation 10180] Add headers to items array. + // [Interpretation 10399] Add headers to items array. $headers = $this->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { @@ -380,13 +380,13 @@ class SermondistributorModelHelp_documents extends JModelList */ public function getExImPortHeaders() { - // [Interpretation 6672] Get a db connection. + // [Interpretation 6767] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 6674] get the columns + // [Interpretation 6769] get the columns $columns = $db->getTableColumns("#__sermondistributor_help_document"); if (SermondistributorHelper::checkArray($columns)) { - // [Interpretation 6678] remove the headers you don't import/export. + // [Interpretation 6773] remove the headers you don't import/export. unset($columns['asset_id']); unset($columns['checked_out']); unset($columns['checked_out_time']); @@ -408,7 +408,7 @@ class SermondistributorModelHelp_documents extends JModelList */ protected function getStoreId($id = '') { - // [Interpretation 9506] Compile the store id. + // [Interpretation 9719] Compile the store id. $id .= ':' . $this->getState('filter.id'); $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.published'); @@ -432,15 +432,15 @@ class SermondistributorModelHelp_documents extends JModelList */ protected function checkInNow() { - // [Interpretation 9899] Get set check in time + // [Interpretation 10112] Get set check in time $time = JComponentHelper::getParams('com_sermondistributor')->get('check_in'); if ($time) { - // [Interpretation 9904] Get a db connection. + // [Interpretation 10117] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 9906] reset query + // [Interpretation 10119] reset query $query = $db->getQuery(true); $query->select('*'); $query->from($db->quoteName('#__sermondistributor_help_document')); @@ -448,24 +448,24 @@ class SermondistributorModelHelp_documents extends JModelList $db->execute(); if ($db->getNumRows()) { - // [Interpretation 9914] Get Yesterdays date + // [Interpretation 10127] Get Yesterdays date $date = JFactory::getDate()->modify($time)->toSql(); - // [Interpretation 9916] reset query + // [Interpretation 10129] reset query $query = $db->getQuery(true); - // [Interpretation 9918] Fields to update. + // [Interpretation 10131] Fields to update. $fields = array( $db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'', $db->quoteName('checked_out') . '=0' ); - // [Interpretation 9923] Conditions for which records should be updated. + // [Interpretation 10136] Conditions for which records should be updated. $conditions = array( $db->quoteName('checked_out') . '!=0', $db->quoteName('checked_out_time') . '<\''.$date.'\'' ); - // [Interpretation 9928] Check table + // [Interpretation 10141] Check table $query->update($db->quoteName('#__sermondistributor_help_document'))->set($fields)->where($conditions); $db->setQuery($query); diff --git a/admin/models/import.php b/admin/models/import.php index 721750f8..546330bb 100644 --- a/admin/models/import.php +++ b/admin/models/import.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage import.php @@ -52,7 +52,7 @@ class SermondistributorModelImport extends JModelLegacy * Import Settings */ protected $getType = NULL; - protected $dataType = NULL; + protected $dataType = NULL; /** * Method to auto-populate the model state. diff --git a/admin/models/preacher.php b/admin/models/preacher.php index e130eb1b..1e24ca82 100644 --- a/admin/models/preacher.php +++ b/admin/models/preacher.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacher.php @@ -113,29 +113,29 @@ class SermondistributorModelPreacher extends JModelAdmin */ public function getVvvsermons() { - // [Interpretation 6337] Get the user object. + // [Interpretation 6432] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6339] Create a new query object. + // [Interpretation 6434] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6342] Select some fields + // [Interpretation 6437] Select some fields $query->select('a.*'); $query->select($db->quoteName('c.title','category_title')); - // [Interpretation 6349] From the sermondistributor_sermon table + // [Interpretation 6444] From the sermondistributor_sermon table $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); $query->join('LEFT', $db->quoteName('#__categories', 'c') . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('c.id') . ')'); - // [Interpretation 6986] From the sermondistributor_preacher table. + // [Interpretation 7134] From the sermondistributor_preacher table. $query->select($db->quoteName('g.name','preacher_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_preacher', 'g') . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('g.id') . ')'); - // [Interpretation 6986] From the sermondistributor_series table. + // [Interpretation 7134] From the sermondistributor_series table. $query->select($db->quoteName('h.name','series_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_series', 'h') . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('h.id') . ')'); - // [Interpretation 6365] Filter by preachervvvv global. + // [Interpretation 6460] Filter by preachervvvv global. $preachervvvv = $this->preachervvvv; if (is_numeric($preachervvvv )) { @@ -150,36 +150,36 @@ class SermondistributorModelPreacher extends JModelAdmin $query->where('a.preacher = -5'); } - // [Interpretation 6382] Join over the asset groups. + // [Interpretation 6477] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6385] Filter by access level. + // [Interpretation 6480] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6390] Implement View Level Access + // [Interpretation 6485] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6397] Order the results by ordering + // [Interpretation 6492] Order the results by ordering $query->order('a.published ASC'); $query->order('a.ordering ASC'); - // [Interpretation 6399] Load the items + // [Interpretation 6494] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -193,14 +193,14 @@ class SermondistributorModelPreacher extends JModelAdmin } } - // [Interpretation 10224] set selection value to a translatable value + // [Interpretation 10443] set selection value to a translatable value if (SermondistributorHelper::checkArray($items)) { foreach ($items as $nr => &$item) { - // [Interpretation 10231] convert link_type + // [Interpretation 10450] convert link_type $item->link_type = $this->selectionTranslationVvvsermons($item->link_type, 'link_type'); - // [Interpretation 10231] convert source + // [Interpretation 10450] convert source $item->source = $this->selectionTranslationVvvsermons($item->source, 'source'); } } @@ -217,20 +217,20 @@ class SermondistributorModelPreacher extends JModelAdmin */ public function selectionTranslationVvvsermons($value,$name) { - // [Interpretation 10257] Array of link_type language strings + // [Interpretation 10476] Array of link_type language strings if ($name == 'link_type') { $link_typeArray = array( 1 => 'COM_SERMONDISTRIBUTOR_SERMON_ENCRYPTED', 2 => 'COM_SERMONDISTRIBUTOR_SERMON_DIRECT' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($link_typeArray[$value]) && SermondistributorHelper::checkString($link_typeArray[$value])) { return $link_typeArray[$value]; } } - // [Interpretation 10257] Array of source language strings + // [Interpretation 10476] Array of source language strings if ($name == 'source') { $sourceArray = array( @@ -239,7 +239,7 @@ class SermondistributorModelPreacher extends JModelAdmin 2 => 'COM_SERMONDISTRIBUTOR_SERMON_DROPBOX', 3 => 'COM_SERMONDISTRIBUTOR_SERMON_URL' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($sourceArray[$value]) && SermondistributorHelper::checkString($sourceArray[$value])) { return $sourceArray[$value]; @@ -259,7 +259,7 @@ class SermondistributorModelPreacher extends JModelAdmin * @since 1.6 */ public function getForm($data = array(), $loadData = true) - { // [Interpretation 8889] Get the form. + { // [Interpretation 9102] Get the form. $form = $this->loadForm('com_sermondistributor.preacher', 'preacher', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) @@ -269,12 +269,12 @@ class SermondistributorModelPreacher extends JModelAdmin $jinput = JFactory::getApplication()->input; - // [Interpretation 8974] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. + // [Interpretation 9187] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. if ($jinput->get('a_id')) { $id = $jinput->get('a_id', 0, 'INT'); } - // [Interpretation 8979] The back end uses id so we use that the rest of the time and set it to 0 by default. + // [Interpretation 9192] The back end uses id so we use that the rest of the time and set it to 0 by default. else { $id = $jinput->get('id', 0, 'INT'); @@ -282,54 +282,54 @@ class SermondistributorModelPreacher extends JModelAdmin $user = JFactory::getUser(); - // [Interpretation 8985] Check for existing item. - // [Interpretation 8986] Modify the form based on Edit State access controls. + // [Interpretation 9198] Check for existing item. + // [Interpretation 9199] Modify the form based on Edit State access controls. if ($id != 0 && (!$user->authorise('preacher.edit.state', 'com_sermondistributor.preacher.' . (int) $id)) || ($id == 0 && !$user->authorise('preacher.edit.state', 'com_sermondistributor'))) { - // [Interpretation 8999] Disable fields for display. + // [Interpretation 9212] Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); - // [Interpretation 9002] Disable fields while saving. + // [Interpretation 9215] Disable fields while saving. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } - // [Interpretation 9007] If this is a new item insure the greated by is set. + // [Interpretation 9220] If this is a new item insure the greated by is set. if (0 == $id) { - // [Interpretation 9010] Set the created_by to this user + // [Interpretation 9223] Set the created_by to this user $form->setValue('created_by', null, $user->id); } - // [Interpretation 9013] Modify the form based on Edit Creaded By access controls. + // [Interpretation 9226] Modify the form based on Edit Creaded By access controls. if ($id != 0 && (!$user->authorise('preacher.edit.created_by', 'com_sermondistributor.preacher.' . (int) $id)) || ($id == 0 && !$user->authorise('preacher.edit.created_by', 'com_sermondistributor'))) { - // [Interpretation 9025] Disable fields for display. + // [Interpretation 9238] Disable fields for display. $form->setFieldAttribute('created_by', 'disabled', 'true'); - // [Interpretation 9027] Disable fields for display. + // [Interpretation 9240] Disable fields for display. $form->setFieldAttribute('created_by', 'readonly', 'true'); - // [Interpretation 9029] Disable fields while saving. + // [Interpretation 9242] Disable fields while saving. $form->setFieldAttribute('created_by', 'filter', 'unset'); } - // [Interpretation 9032] Modify the form based on Edit Creaded Date access controls. + // [Interpretation 9245] Modify the form based on Edit Creaded Date access controls. if ($id != 0 && (!$user->authorise('preacher.edit.created', 'com_sermondistributor.preacher.' . (int) $id)) || ($id == 0 && !$user->authorise('preacher.edit.created', 'com_sermondistributor'))) { - // [Interpretation 9044] Disable fields for display. + // [Interpretation 9257] Disable fields for display. $form->setFieldAttribute('created', 'disabled', 'true'); - // [Interpretation 9046] Disable fields while saving. + // [Interpretation 9259] Disable fields while saving. $form->setFieldAttribute('created', 'filter', 'unset'); } - // [Interpretation 9079] Only load these values if no id is found + // [Interpretation 9292] Only load these values if no id is found if (0 == $id) { - // [Interpretation 9082] Set redirected field name + // [Interpretation 9295] Set redirected field name $redirectedField = $jinput->get('ref', null, 'STRING'); - // [Interpretation 9084] Set redirected field value + // [Interpretation 9297] Set redirected field value $redirectedValue = $jinput->get('refid', 0, 'INT'); if (0 != $redirectedValue && $redirectedField) { - // [Interpretation 9088] Now set the local-redirected field default value + // [Interpretation 9301] Now set the local-redirected field default value $form->setValue($redirectedField, null, $redirectedValue); } } @@ -366,7 +366,7 @@ class SermondistributorModelPreacher extends JModelAdmin } $user = JFactory::getUser(); - // [Interpretation 9210] The record has been set. Check the record permissions. + // [Interpretation 9423] The record has been set. Check the record permissions. return $user->authorise('preacher.delete', 'com_sermondistributor.preacher.' . (int) $record->id); } return false; @@ -388,14 +388,14 @@ class SermondistributorModelPreacher extends JModelAdmin if ($recordId) { - // [Interpretation 9297] The record has been set. Check the record permissions. + // [Interpretation 9510] The record has been set. Check the record permissions. $permission = $user->authorise('preacher.edit.state', 'com_sermondistributor.preacher.' . (int) $recordId); if (!$permission && !is_null($permission)) { return false; } } - // [Interpretation 9314] In the absense of better information, revert to the component permissions. + // [Interpretation 9527] In the absense of better information, revert to the component permissions. return $user->authorise('preacher.edit.state', 'com_sermondistributor'); } @@ -410,7 +410,7 @@ class SermondistributorModelPreacher extends JModelAdmin */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 9122] Check specific edit permission then general edit permission. + // [Interpretation 9335] Check specific edit permission then general edit permission. $user = JFactory::getUser(); return $user->authorise('preacher.edit', 'com_sermondistributor.preacher.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('preacher.edit', 'com_sermondistributor'); @@ -636,7 +636,7 @@ class SermondistributorModelPreacher extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 4183] Set some needed variables. + // [Interpretation 4263] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -650,12 +650,12 @@ class SermondistributorModelPreacher extends JModelAdmin return false; } - // [Interpretation 4203] get list of uniqe fields + // [Interpretation 4283] get list of uniqe fields $uniqeFields = $this->getUniqeFields(); - // [Interpretation 4205] remove move_copy from array + // [Interpretation 4285] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4208] make sure published is set + // [Interpretation 4288] make sure published is set if (!isset($values['published'])) { $values['published'] = 0; @@ -667,21 +667,21 @@ class SermondistributorModelPreacher extends JModelAdmin $newIds = array(); - // [Interpretation 4245] Parent exists so let's proceed + // [Interpretation 4325] Parent exists so let's proceed while (!empty($pks)) { - // [Interpretation 4248] Pop the first ID off the stack + // [Interpretation 4328] Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); - // [Interpretation 4253] only allow copy if user may edit this item. + // [Interpretation 4333] only allow copy if user may edit this item. if (!$this->user->authorise('preacher.edit', $contexts[$pk])) { - // [Interpretation 4263] Not fatal error + // [Interpretation 4343] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); @@ -689,19 +689,19 @@ class SermondistributorModelPreacher extends JModelAdmin } - // [Interpretation 4268] Check that the row actually exists + // [Interpretation 4348] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4273] Fatal error + // [Interpretation 4353] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4280] Not fatal error + // [Interpretation 4360] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } @@ -709,7 +709,7 @@ class SermondistributorModelPreacher extends JModelAdmin list($this->table->name, $this->table->alias) = $this->_generateNewTitle($this->table->alias, $this->table->name); - // [Interpretation 4316] insert all set values + // [Interpretation 4396] insert all set values if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) @@ -721,7 +721,7 @@ class SermondistributorModelPreacher extends JModelAdmin } } - // [Interpretation 4328] update all uniqe fields + // [Interpretation 4408] update all uniqe fields if (SermondistributorHelper::checkArray($uniqeFields)) { foreach ($uniqeFields as $uniqeField) @@ -730,13 +730,13 @@ class SermondistributorModelPreacher extends JModelAdmin } } - // [Interpretation 4337] Reset the ID because we are making a copy + // [Interpretation 4417] Reset the ID because we are making a copy $this->table->id = 0; - // [Interpretation 4340] TODO: Deal with ordering? - // [Interpretation 4341] $this->table->ordering = 1; + // [Interpretation 4420] TODO: Deal with ordering? + // [Interpretation 4421] $this->table->ordering = 1; - // [Interpretation 4343] Check the row. + // [Interpretation 4423] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -749,7 +749,7 @@ class SermondistributorModelPreacher extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4356] Store the row. + // [Interpretation 4436] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -757,14 +757,14 @@ class SermondistributorModelPreacher extends JModelAdmin return false; } - // [Interpretation 4364] Get the new item ID + // [Interpretation 4444] Get the new item ID $newId = $this->table->get('id'); - // [Interpretation 4367] Add the new ID to the array + // [Interpretation 4447] Add the new ID to the array $newIds[$pk] = $newId; } - // [Interpretation 4371] Clean the cache + // [Interpretation 4451] Clean the cache $this->cleanCache(); return $newIds; @@ -785,7 +785,7 @@ class SermondistributorModelPreacher extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 3985] Set some needed variables. + // [Interpretation 4065] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -800,15 +800,15 @@ class SermondistributorModelPreacher extends JModelAdmin return false; } - // [Interpretation 4007] make sure published only updates if user has the permission. + // [Interpretation 4087] make sure published only updates if user has the permission. if (isset($values['published']) && !$this->canDo->get('preacher.edit.state')) { unset($values['published']); } - // [Interpretation 4020] remove move_copy from array + // [Interpretation 4100] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4041] Parent exists so we proceed + // [Interpretation 4121] Parent exists so we proceed foreach ($pks as $pk) { if (!$this->user->authorise('preacher.edit', $contexts[$pk])) @@ -818,30 +818,30 @@ class SermondistributorModelPreacher extends JModelAdmin return false; } - // [Interpretation 4058] Check that the row actually exists + // [Interpretation 4138] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4063] Fatal error + // [Interpretation 4143] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4070] Not fatal error + // [Interpretation 4150] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } - // [Interpretation 4076] insert all set values. + // [Interpretation 4156] insert all set values. if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) { - // [Interpretation 4081] Do special action for access. + // [Interpretation 4161] Do special action for access. if ('access' == $key && strlen($value) > 0) { $this->table->$key = $value; @@ -854,7 +854,7 @@ class SermondistributorModelPreacher extends JModelAdmin } - // [Interpretation 4093] Check the row. + // [Interpretation 4173] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -867,7 +867,7 @@ class SermondistributorModelPreacher extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4106] Store the row. + // [Interpretation 4186] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -876,7 +876,7 @@ class SermondistributorModelPreacher extends JModelAdmin } } - // [Interpretation 4115] Clean the cache + // [Interpretation 4195] Clean the cache $this->cleanCache(); return true; @@ -914,7 +914,7 @@ class SermondistributorModelPreacher extends JModelAdmin $data['params'] = (string) $params; } - // [Interpretation 4397] Alter the name for save as copy + // [Interpretation 4477] Alter the name for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); @@ -937,7 +937,7 @@ class SermondistributorModelPreacher extends JModelAdmin $data['published'] = 0; } - // [Interpretation 4424] Automatic handling of alias for empty fields + // [Interpretation 4504] Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (int) $input->get('id') == 0) { if ($data['alias'] == null) @@ -968,10 +968,10 @@ class SermondistributorModelPreacher extends JModelAdmin } } - // [Interpretation 4463] Alter the uniqe field for save as copy + // [Interpretation 4543] Alter the uniqe field for save as copy if ($input->get('task') == 'save2copy') { - // [Interpretation 4466] Automatic handling of other uniqe fields + // [Interpretation 4546] Automatic handling of other uniqe fields $uniqeFields = $this->getUniqeFields(); if (SermondistributorHelper::checkArray($uniqeFields)) { @@ -1025,7 +1025,7 @@ class SermondistributorModelPreacher extends JModelAdmin protected function _generateNewTitle($alias, $title) { - // [Interpretation 4497] Alter the title & alias + // [Interpretation 4577] Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias))) diff --git a/admin/models/preachers.php b/admin/models/preachers.php index 3b48bbb0..e40423ca 100644 --- a/admin/models/preachers.php +++ b/admin/models/preachers.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preachers.php @@ -101,16 +101,16 @@ class SermondistributorModelPreachers extends JModelList */ public function getItems() { - // [Interpretation 9883] check in items + // [Interpretation 10096] check in items $this->checkInNow(); // load parent items $items = parent::getItems(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -135,19 +135,19 @@ class SermondistributorModelPreachers extends JModelList */ protected function getListQuery() { - // [Interpretation 6833] Get the user object. + // [Interpretation 6981] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6835] Create a new query object. + // [Interpretation 6983] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6838] Select some fields + // [Interpretation 6986] Select some fields $query->select('a.*'); - // [Interpretation 6845] From the sermondistributor_item table + // [Interpretation 6993] From the sermondistributor_item table $query->from($db->quoteName('#__sermondistributor_preacher', 'a')); - // [Interpretation 6859] Filter by published state + // [Interpretation 7007] Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { @@ -158,21 +158,21 @@ class SermondistributorModelPreachers extends JModelList $query->where('(a.published = 0 OR a.published = 1)'); } - // [Interpretation 6871] Join over the asset groups. + // [Interpretation 7019] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6874] Filter by access level. + // [Interpretation 7022] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6879] Implement View Level Access + // [Interpretation 7027] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6956] Filter by search. + // [Interpretation 7104] Filter by search. $search = $this->getState('filter.search'); if (!empty($search)) { @@ -188,7 +188,7 @@ class SermondistributorModelPreachers extends JModelList } - // [Interpretation 6915] Add the list ordering clause. + // [Interpretation 7063] Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'a.id'); $orderDirn = $this->state->get('list.direction', 'asc'); if ($orderCol != '') @@ -206,42 +206,42 @@ class SermondistributorModelPreachers extends JModelList */ public function getExportData($pks) { - // [Interpretation 6623] setup the query + // [Interpretation 6718] setup the query if (SermondistributorHelper::checkArray($pks)) { - // [Interpretation 6626] Get the user object. + // [Interpretation 6721] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6628] Create a new query object. + // [Interpretation 6723] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6631] Select some fields + // [Interpretation 6726] Select some fields $query->select('a.*'); - // [Interpretation 6633] From the sermondistributor_preacher table + // [Interpretation 6728] From the sermondistributor_preacher table $query->from($db->quoteName('#__sermondistributor_preacher', 'a')); $query->where('a.id IN (' . implode(',',$pks) . ')'); - // [Interpretation 6643] Implement View Level Access + // [Interpretation 6738] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6650] Order the results by ordering + // [Interpretation 6745] Order the results by ordering $query->order('a.ordering ASC'); - // [Interpretation 6652] Load the items + // [Interpretation 6747] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -252,13 +252,13 @@ class SermondistributorModelPreachers extends JModelList continue; } - // [Interpretation 10171] unset the values we don't want exported. + // [Interpretation 10390] unset the values we don't want exported. unset($item->asset_id); unset($item->checked_out); unset($item->checked_out_time); } } - // [Interpretation 10180] Add headers to items array. + // [Interpretation 10399] Add headers to items array. $headers = $this->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { @@ -277,13 +277,13 @@ class SermondistributorModelPreachers extends JModelList */ public function getExImPortHeaders() { - // [Interpretation 6672] Get a db connection. + // [Interpretation 6767] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 6674] get the columns + // [Interpretation 6769] get the columns $columns = $db->getTableColumns("#__sermondistributor_preacher"); if (SermondistributorHelper::checkArray($columns)) { - // [Interpretation 6678] remove the headers you don't import/export. + // [Interpretation 6773] remove the headers you don't import/export. unset($columns['asset_id']); unset($columns['checked_out']); unset($columns['checked_out_time']); @@ -305,7 +305,7 @@ class SermondistributorModelPreachers extends JModelList */ protected function getStoreId($id = '') { - // [Interpretation 9506] Compile the store id. + // [Interpretation 9719] Compile the store id. $id .= ':' . $this->getState('filter.id'); $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.published'); @@ -326,15 +326,15 @@ class SermondistributorModelPreachers extends JModelList */ protected function checkInNow() { - // [Interpretation 9899] Get set check in time + // [Interpretation 10112] Get set check in time $time = JComponentHelper::getParams('com_sermondistributor')->get('check_in'); if ($time) { - // [Interpretation 9904] Get a db connection. + // [Interpretation 10117] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 9906] reset query + // [Interpretation 10119] reset query $query = $db->getQuery(true); $query->select('*'); $query->from($db->quoteName('#__sermondistributor_preacher')); @@ -342,24 +342,24 @@ class SermondistributorModelPreachers extends JModelList $db->execute(); if ($db->getNumRows()) { - // [Interpretation 9914] Get Yesterdays date + // [Interpretation 10127] Get Yesterdays date $date = JFactory::getDate()->modify($time)->toSql(); - // [Interpretation 9916] reset query + // [Interpretation 10129] reset query $query = $db->getQuery(true); - // [Interpretation 9918] Fields to update. + // [Interpretation 10131] Fields to update. $fields = array( $db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'', $db->quoteName('checked_out') . '=0' ); - // [Interpretation 9923] Conditions for which records should be updated. + // [Interpretation 10136] Conditions for which records should be updated. $conditions = array( $db->quoteName('checked_out') . '!=0', $db->quoteName('checked_out_time') . '<\''.$date.'\'' ); - // [Interpretation 9928] Check table + // [Interpretation 10141] Check table $query->update($db->quoteName('#__sermondistributor_preacher'))->set($fields)->where($conditions); $db->setQuery($query); diff --git a/admin/models/series.php b/admin/models/series.php index e7c2abe8..4c327d2e 100644 --- a/admin/models/series.php +++ b/admin/models/series.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series.php @@ -113,29 +113,29 @@ class SermondistributorModelSeries extends JModelAdmin */ public function getVwcsermons() { - // [Interpretation 6337] Get the user object. + // [Interpretation 6432] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6339] Create a new query object. + // [Interpretation 6434] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6342] Select some fields + // [Interpretation 6437] Select some fields $query->select('a.*'); $query->select($db->quoteName('c.title','category_title')); - // [Interpretation 6349] From the sermondistributor_sermon table + // [Interpretation 6444] From the sermondistributor_sermon table $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); $query->join('LEFT', $db->quoteName('#__categories', 'c') . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('c.id') . ')'); - // [Interpretation 6986] From the sermondistributor_preacher table. + // [Interpretation 7134] From the sermondistributor_preacher table. $query->select($db->quoteName('g.name','preacher_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_preacher', 'g') . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('g.id') . ')'); - // [Interpretation 6986] From the sermondistributor_series table. + // [Interpretation 7134] From the sermondistributor_series table. $query->select($db->quoteName('h.name','series_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_series', 'h') . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('h.id') . ')'); - // [Interpretation 6365] Filter by seriesvvvx global. + // [Interpretation 6460] Filter by seriesvvvx global. $seriesvvvx = $this->seriesvvvx; if (is_numeric($seriesvvvx )) { @@ -150,36 +150,36 @@ class SermondistributorModelSeries extends JModelAdmin $query->where('a.series = -5'); } - // [Interpretation 6382] Join over the asset groups. + // [Interpretation 6477] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6385] Filter by access level. + // [Interpretation 6480] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6390] Implement View Level Access + // [Interpretation 6485] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6397] Order the results by ordering + // [Interpretation 6492] Order the results by ordering $query->order('a.published ASC'); $query->order('a.ordering ASC'); - // [Interpretation 6399] Load the items + // [Interpretation 6494] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -193,14 +193,14 @@ class SermondistributorModelSeries extends JModelAdmin } } - // [Interpretation 10224] set selection value to a translatable value + // [Interpretation 10443] set selection value to a translatable value if (SermondistributorHelper::checkArray($items)) { foreach ($items as $nr => &$item) { - // [Interpretation 10231] convert link_type + // [Interpretation 10450] convert link_type $item->link_type = $this->selectionTranslationVwcsermons($item->link_type, 'link_type'); - // [Interpretation 10231] convert source + // [Interpretation 10450] convert source $item->source = $this->selectionTranslationVwcsermons($item->source, 'source'); } } @@ -217,20 +217,20 @@ class SermondistributorModelSeries extends JModelAdmin */ public function selectionTranslationVwcsermons($value,$name) { - // [Interpretation 10257] Array of link_type language strings + // [Interpretation 10476] Array of link_type language strings if ($name == 'link_type') { $link_typeArray = array( 1 => 'COM_SERMONDISTRIBUTOR_SERMON_ENCRYPTED', 2 => 'COM_SERMONDISTRIBUTOR_SERMON_DIRECT' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($link_typeArray[$value]) && SermondistributorHelper::checkString($link_typeArray[$value])) { return $link_typeArray[$value]; } } - // [Interpretation 10257] Array of source language strings + // [Interpretation 10476] Array of source language strings if ($name == 'source') { $sourceArray = array( @@ -239,7 +239,7 @@ class SermondistributorModelSeries extends JModelAdmin 2 => 'COM_SERMONDISTRIBUTOR_SERMON_DROPBOX', 3 => 'COM_SERMONDISTRIBUTOR_SERMON_URL' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($sourceArray[$value]) && SermondistributorHelper::checkString($sourceArray[$value])) { return $sourceArray[$value]; @@ -259,7 +259,7 @@ class SermondistributorModelSeries extends JModelAdmin * @since 1.6 */ public function getForm($data = array(), $loadData = true) - { // [Interpretation 8889] Get the form. + { // [Interpretation 9102] Get the form. $form = $this->loadForm('com_sermondistributor.series', 'series', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) @@ -269,12 +269,12 @@ class SermondistributorModelSeries extends JModelAdmin $jinput = JFactory::getApplication()->input; - // [Interpretation 8974] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. + // [Interpretation 9187] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. if ($jinput->get('a_id')) { $id = $jinput->get('a_id', 0, 'INT'); } - // [Interpretation 8979] The back end uses id so we use that the rest of the time and set it to 0 by default. + // [Interpretation 9192] The back end uses id so we use that the rest of the time and set it to 0 by default. else { $id = $jinput->get('id', 0, 'INT'); @@ -282,54 +282,54 @@ class SermondistributorModelSeries extends JModelAdmin $user = JFactory::getUser(); - // [Interpretation 8985] Check for existing item. - // [Interpretation 8986] Modify the form based on Edit State access controls. + // [Interpretation 9198] Check for existing item. + // [Interpretation 9199] Modify the form based on Edit State access controls. if ($id != 0 && (!$user->authorise('series.edit.state', 'com_sermondistributor.series.' . (int) $id)) || ($id == 0 && !$user->authorise('series.edit.state', 'com_sermondistributor'))) { - // [Interpretation 8999] Disable fields for display. + // [Interpretation 9212] Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); - // [Interpretation 9002] Disable fields while saving. + // [Interpretation 9215] Disable fields while saving. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } - // [Interpretation 9007] If this is a new item insure the greated by is set. + // [Interpretation 9220] If this is a new item insure the greated by is set. if (0 == $id) { - // [Interpretation 9010] Set the created_by to this user + // [Interpretation 9223] Set the created_by to this user $form->setValue('created_by', null, $user->id); } - // [Interpretation 9013] Modify the form based on Edit Creaded By access controls. + // [Interpretation 9226] Modify the form based on Edit Creaded By access controls. if ($id != 0 && (!$user->authorise('series.edit.created_by', 'com_sermondistributor.series.' . (int) $id)) || ($id == 0 && !$user->authorise('series.edit.created_by', 'com_sermondistributor'))) { - // [Interpretation 9025] Disable fields for display. + // [Interpretation 9238] Disable fields for display. $form->setFieldAttribute('created_by', 'disabled', 'true'); - // [Interpretation 9027] Disable fields for display. + // [Interpretation 9240] Disable fields for display. $form->setFieldAttribute('created_by', 'readonly', 'true'); - // [Interpretation 9029] Disable fields while saving. + // [Interpretation 9242] Disable fields while saving. $form->setFieldAttribute('created_by', 'filter', 'unset'); } - // [Interpretation 9032] Modify the form based on Edit Creaded Date access controls. + // [Interpretation 9245] Modify the form based on Edit Creaded Date access controls. if ($id != 0 && (!$user->authorise('series.edit.created', 'com_sermondistributor.series.' . (int) $id)) || ($id == 0 && !$user->authorise('series.edit.created', 'com_sermondistributor'))) { - // [Interpretation 9044] Disable fields for display. + // [Interpretation 9257] Disable fields for display. $form->setFieldAttribute('created', 'disabled', 'true'); - // [Interpretation 9046] Disable fields while saving. + // [Interpretation 9259] Disable fields while saving. $form->setFieldAttribute('created', 'filter', 'unset'); } - // [Interpretation 9079] Only load these values if no id is found + // [Interpretation 9292] Only load these values if no id is found if (0 == $id) { - // [Interpretation 9082] Set redirected field name + // [Interpretation 9295] Set redirected field name $redirectedField = $jinput->get('ref', null, 'STRING'); - // [Interpretation 9084] Set redirected field value + // [Interpretation 9297] Set redirected field value $redirectedValue = $jinput->get('refid', 0, 'INT'); if (0 != $redirectedValue && $redirectedField) { - // [Interpretation 9088] Now set the local-redirected field default value + // [Interpretation 9301] Now set the local-redirected field default value $form->setValue($redirectedField, null, $redirectedValue); } } @@ -366,7 +366,7 @@ class SermondistributorModelSeries extends JModelAdmin } $user = JFactory::getUser(); - // [Interpretation 9210] The record has been set. Check the record permissions. + // [Interpretation 9423] The record has been set. Check the record permissions. return $user->authorise('series.delete', 'com_sermondistributor.series.' . (int) $record->id); } return false; @@ -388,14 +388,14 @@ class SermondistributorModelSeries extends JModelAdmin if ($recordId) { - // [Interpretation 9297] The record has been set. Check the record permissions. + // [Interpretation 9510] The record has been set. Check the record permissions. $permission = $user->authorise('series.edit.state', 'com_sermondistributor.series.' . (int) $recordId); if (!$permission && !is_null($permission)) { return false; } } - // [Interpretation 9314] In the absense of better information, revert to the component permissions. + // [Interpretation 9527] In the absense of better information, revert to the component permissions. return $user->authorise('series.edit.state', 'com_sermondistributor'); } @@ -410,7 +410,7 @@ class SermondistributorModelSeries extends JModelAdmin */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 9122] Check specific edit permission then general edit permission. + // [Interpretation 9335] Check specific edit permission then general edit permission. $user = JFactory::getUser(); return $user->authorise('series.edit', 'com_sermondistributor.series.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('series.edit', 'com_sermondistributor'); @@ -636,7 +636,7 @@ class SermondistributorModelSeries extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 4183] Set some needed variables. + // [Interpretation 4263] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -650,12 +650,12 @@ class SermondistributorModelSeries extends JModelAdmin return false; } - // [Interpretation 4203] get list of uniqe fields + // [Interpretation 4283] get list of uniqe fields $uniqeFields = $this->getUniqeFields(); - // [Interpretation 4205] remove move_copy from array + // [Interpretation 4285] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4208] make sure published is set + // [Interpretation 4288] make sure published is set if (!isset($values['published'])) { $values['published'] = 0; @@ -667,21 +667,21 @@ class SermondistributorModelSeries extends JModelAdmin $newIds = array(); - // [Interpretation 4245] Parent exists so let's proceed + // [Interpretation 4325] Parent exists so let's proceed while (!empty($pks)) { - // [Interpretation 4248] Pop the first ID off the stack + // [Interpretation 4328] Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); - // [Interpretation 4253] only allow copy if user may edit this item. + // [Interpretation 4333] only allow copy if user may edit this item. if (!$this->user->authorise('series.edit', $contexts[$pk])) { - // [Interpretation 4263] Not fatal error + // [Interpretation 4343] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); @@ -689,19 +689,19 @@ class SermondistributorModelSeries extends JModelAdmin } - // [Interpretation 4268] Check that the row actually exists + // [Interpretation 4348] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4273] Fatal error + // [Interpretation 4353] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4280] Not fatal error + // [Interpretation 4360] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } @@ -709,7 +709,7 @@ class SermondistributorModelSeries extends JModelAdmin list($this->table->name, $this->table->alias) = $this->_generateNewTitle($this->table->alias, $this->table->name); - // [Interpretation 4316] insert all set values + // [Interpretation 4396] insert all set values if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) @@ -721,7 +721,7 @@ class SermondistributorModelSeries extends JModelAdmin } } - // [Interpretation 4328] update all uniqe fields + // [Interpretation 4408] update all uniqe fields if (SermondistributorHelper::checkArray($uniqeFields)) { foreach ($uniqeFields as $uniqeField) @@ -730,13 +730,13 @@ class SermondistributorModelSeries extends JModelAdmin } } - // [Interpretation 4337] Reset the ID because we are making a copy + // [Interpretation 4417] Reset the ID because we are making a copy $this->table->id = 0; - // [Interpretation 4340] TODO: Deal with ordering? - // [Interpretation 4341] $this->table->ordering = 1; + // [Interpretation 4420] TODO: Deal with ordering? + // [Interpretation 4421] $this->table->ordering = 1; - // [Interpretation 4343] Check the row. + // [Interpretation 4423] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -749,7 +749,7 @@ class SermondistributorModelSeries extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4356] Store the row. + // [Interpretation 4436] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -757,14 +757,14 @@ class SermondistributorModelSeries extends JModelAdmin return false; } - // [Interpretation 4364] Get the new item ID + // [Interpretation 4444] Get the new item ID $newId = $this->table->get('id'); - // [Interpretation 4367] Add the new ID to the array + // [Interpretation 4447] Add the new ID to the array $newIds[$pk] = $newId; } - // [Interpretation 4371] Clean the cache + // [Interpretation 4451] Clean the cache $this->cleanCache(); return $newIds; @@ -785,7 +785,7 @@ class SermondistributorModelSeries extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 3985] Set some needed variables. + // [Interpretation 4065] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -800,15 +800,15 @@ class SermondistributorModelSeries extends JModelAdmin return false; } - // [Interpretation 4007] make sure published only updates if user has the permission. + // [Interpretation 4087] make sure published only updates if user has the permission. if (isset($values['published']) && !$this->canDo->get('series.edit.state')) { unset($values['published']); } - // [Interpretation 4020] remove move_copy from array + // [Interpretation 4100] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4041] Parent exists so we proceed + // [Interpretation 4121] Parent exists so we proceed foreach ($pks as $pk) { if (!$this->user->authorise('series.edit', $contexts[$pk])) @@ -818,30 +818,30 @@ class SermondistributorModelSeries extends JModelAdmin return false; } - // [Interpretation 4058] Check that the row actually exists + // [Interpretation 4138] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4063] Fatal error + // [Interpretation 4143] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4070] Not fatal error + // [Interpretation 4150] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } - // [Interpretation 4076] insert all set values. + // [Interpretation 4156] insert all set values. if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) { - // [Interpretation 4081] Do special action for access. + // [Interpretation 4161] Do special action for access. if ('access' == $key && strlen($value) > 0) { $this->table->$key = $value; @@ -854,7 +854,7 @@ class SermondistributorModelSeries extends JModelAdmin } - // [Interpretation 4093] Check the row. + // [Interpretation 4173] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -867,7 +867,7 @@ class SermondistributorModelSeries extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4106] Store the row. + // [Interpretation 4186] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -876,7 +876,7 @@ class SermondistributorModelSeries extends JModelAdmin } } - // [Interpretation 4115] Clean the cache + // [Interpretation 4195] Clean the cache $this->cleanCache(); return true; @@ -914,7 +914,7 @@ class SermondistributorModelSeries extends JModelAdmin $data['params'] = (string) $params; } - // [Interpretation 4397] Alter the name for save as copy + // [Interpretation 4477] Alter the name for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); @@ -937,7 +937,7 @@ class SermondistributorModelSeries extends JModelAdmin $data['published'] = 0; } - // [Interpretation 4424] Automatic handling of alias for empty fields + // [Interpretation 4504] Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (int) $input->get('id') == 0) { if ($data['alias'] == null) @@ -968,10 +968,10 @@ class SermondistributorModelSeries extends JModelAdmin } } - // [Interpretation 4463] Alter the uniqe field for save as copy + // [Interpretation 4543] Alter the uniqe field for save as copy if ($input->get('task') == 'save2copy') { - // [Interpretation 4466] Automatic handling of other uniqe fields + // [Interpretation 4546] Automatic handling of other uniqe fields $uniqeFields = $this->getUniqeFields(); if (SermondistributorHelper::checkArray($uniqeFields)) { @@ -1025,7 +1025,7 @@ class SermondistributorModelSeries extends JModelAdmin protected function _generateNewTitle($alias, $title) { - // [Interpretation 4497] Alter the title & alias + // [Interpretation 4577] Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias))) diff --git a/admin/models/series_list.php b/admin/models/series_list.php index f4275763..6903d6ef 100644 --- a/admin/models/series_list.php +++ b/admin/models/series_list.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series_list.php @@ -97,16 +97,16 @@ class SermondistributorModelSeries_list extends JModelList */ public function getItems() { - // [Interpretation 9883] check in items + // [Interpretation 10096] check in items $this->checkInNow(); // load parent items $items = parent::getItems(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -131,19 +131,19 @@ class SermondistributorModelSeries_list extends JModelList */ protected function getListQuery() { - // [Interpretation 6833] Get the user object. + // [Interpretation 6981] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6835] Create a new query object. + // [Interpretation 6983] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6838] Select some fields + // [Interpretation 6986] Select some fields $query->select('a.*'); - // [Interpretation 6845] From the sermondistributor_item table + // [Interpretation 6993] From the sermondistributor_item table $query->from($db->quoteName('#__sermondistributor_series', 'a')); - // [Interpretation 6859] Filter by published state + // [Interpretation 7007] Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { @@ -154,21 +154,21 @@ class SermondistributorModelSeries_list extends JModelList $query->where('(a.published = 0 OR a.published = 1)'); } - // [Interpretation 6871] Join over the asset groups. + // [Interpretation 7019] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6874] Filter by access level. + // [Interpretation 7022] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6879] Implement View Level Access + // [Interpretation 7027] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6956] Filter by search. + // [Interpretation 7104] Filter by search. $search = $this->getState('filter.search'); if (!empty($search)) { @@ -184,7 +184,7 @@ class SermondistributorModelSeries_list extends JModelList } - // [Interpretation 6915] Add the list ordering clause. + // [Interpretation 7063] Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'a.id'); $orderDirn = $this->state->get('list.direction', 'asc'); if ($orderCol != '') @@ -202,42 +202,42 @@ class SermondistributorModelSeries_list extends JModelList */ public function getExportData($pks) { - // [Interpretation 6623] setup the query + // [Interpretation 6718] setup the query if (SermondistributorHelper::checkArray($pks)) { - // [Interpretation 6626] Get the user object. + // [Interpretation 6721] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6628] Create a new query object. + // [Interpretation 6723] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6631] Select some fields + // [Interpretation 6726] Select some fields $query->select('a.*'); - // [Interpretation 6633] From the sermondistributor_series table + // [Interpretation 6728] From the sermondistributor_series table $query->from($db->quoteName('#__sermondistributor_series', 'a')); $query->where('a.id IN (' . implode(',',$pks) . ')'); - // [Interpretation 6643] Implement View Level Access + // [Interpretation 6738] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6650] Order the results by ordering + // [Interpretation 6745] Order the results by ordering $query->order('a.ordering ASC'); - // [Interpretation 6652] Load the items + // [Interpretation 6747] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -248,13 +248,13 @@ class SermondistributorModelSeries_list extends JModelList continue; } - // [Interpretation 10171] unset the values we don't want exported. + // [Interpretation 10390] unset the values we don't want exported. unset($item->asset_id); unset($item->checked_out); unset($item->checked_out_time); } } - // [Interpretation 10180] Add headers to items array. + // [Interpretation 10399] Add headers to items array. $headers = $this->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { @@ -273,13 +273,13 @@ class SermondistributorModelSeries_list extends JModelList */ public function getExImPortHeaders() { - // [Interpretation 6672] Get a db connection. + // [Interpretation 6767] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 6674] get the columns + // [Interpretation 6769] get the columns $columns = $db->getTableColumns("#__sermondistributor_series"); if (SermondistributorHelper::checkArray($columns)) { - // [Interpretation 6678] remove the headers you don't import/export. + // [Interpretation 6773] remove the headers you don't import/export. unset($columns['asset_id']); unset($columns['checked_out']); unset($columns['checked_out_time']); @@ -301,7 +301,7 @@ class SermondistributorModelSeries_list extends JModelList */ protected function getStoreId($id = '') { - // [Interpretation 9506] Compile the store id. + // [Interpretation 9719] Compile the store id. $id .= ':' . $this->getState('filter.id'); $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.published'); @@ -321,15 +321,15 @@ class SermondistributorModelSeries_list extends JModelList */ protected function checkInNow() { - // [Interpretation 9899] Get set check in time + // [Interpretation 10112] Get set check in time $time = JComponentHelper::getParams('com_sermondistributor')->get('check_in'); if ($time) { - // [Interpretation 9904] Get a db connection. + // [Interpretation 10117] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 9906] reset query + // [Interpretation 10119] reset query $query = $db->getQuery(true); $query->select('*'); $query->from($db->quoteName('#__sermondistributor_series')); @@ -337,24 +337,24 @@ class SermondistributorModelSeries_list extends JModelList $db->execute(); if ($db->getNumRows()) { - // [Interpretation 9914] Get Yesterdays date + // [Interpretation 10127] Get Yesterdays date $date = JFactory::getDate()->modify($time)->toSql(); - // [Interpretation 9916] reset query + // [Interpretation 10129] reset query $query = $db->getQuery(true); - // [Interpretation 9918] Fields to update. + // [Interpretation 10131] Fields to update. $fields = array( $db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'', $db->quoteName('checked_out') . '=0' ); - // [Interpretation 9923] Conditions for which records should be updated. + // [Interpretation 10136] Conditions for which records should be updated. $conditions = array( $db->quoteName('checked_out') . '!=0', $db->quoteName('checked_out_time') . '<\''.$date.'\'' ); - // [Interpretation 9928] Check table + // [Interpretation 10141] Check table $query->update($db->quoteName('#__sermondistributor_series'))->set($fields)->where($conditions); $db->setQuery($query); diff --git a/admin/models/sermon.php b/admin/models/sermon.php index 3bd45d0f..010f4332 100644 --- a/admin/models/sermon.php +++ b/admin/models/sermon.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermon.php @@ -97,13 +97,13 @@ class SermondistributorModelSermon extends JModelAdmin if (!empty($item->local_files)) { - // [Interpretation 3187] JSON Decode local_files. + // [Interpretation 3267] JSON Decode local_files. $item->local_files = json_decode($item->local_files); } if (!empty($item->manual_files)) { - // [Interpretation 3187] JSON Decode manual_files. + // [Interpretation 3267] JSON Decode manual_files. $item->manual_files = json_decode($item->manual_files); } @@ -125,31 +125,31 @@ class SermondistributorModelSermon extends JModelAdmin */ public function getVwbstastics() { - // [Interpretation 6337] Get the user object. + // [Interpretation 6432] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6339] Create a new query object. + // [Interpretation 6434] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6342] Select some fields + // [Interpretation 6437] Select some fields $query->select('a.*'); - // [Interpretation 6349] From the sermondistributor_statistic table + // [Interpretation 6444] From the sermondistributor_statistic table $query->from($db->quoteName('#__sermondistributor_statistic', 'a')); - // [Interpretation 6986] From the sermondistributor_sermon table. + // [Interpretation 7134] From the sermondistributor_sermon table. $query->select($db->quoteName('g.name','sermon_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_sermon', 'g') . ' ON (' . $db->quoteName('a.sermon') . ' = ' . $db->quoteName('g.id') . ')'); - // [Interpretation 6986] From the sermondistributor_preacher table. + // [Interpretation 7134] From the sermondistributor_preacher table. $query->select($db->quoteName('h.name','preacher_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_preacher', 'h') . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('h.id') . ')'); - // [Interpretation 6986] From the sermondistributor_series table. + // [Interpretation 7134] From the sermondistributor_series table. $query->select($db->quoteName('i.name','series_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_series', 'i') . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('i.id') . ')'); - // [Interpretation 6365] Filter by sermonvvvw global. + // [Interpretation 6460] Filter by sermonvvvw global. $sermonvvvw = $this->sermonvvvw; if (is_numeric($sermonvvvw )) { @@ -164,36 +164,36 @@ class SermondistributorModelSermon extends JModelAdmin $query->where('a.sermon = -5'); } - // [Interpretation 6382] Join over the asset groups. + // [Interpretation 6477] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6385] Filter by access level. + // [Interpretation 6480] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6390] Implement View Level Access + // [Interpretation 6485] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6397] Order the results by ordering + // [Interpretation 6492] Order the results by ordering $query->order('a.published ASC'); $query->order('a.ordering ASC'); - // [Interpretation 6399] Load the items + // [Interpretation 6494] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -222,7 +222,7 @@ class SermondistributorModelSermon extends JModelAdmin * @since 1.6 */ public function getForm($data = array(), $loadData = true) - { // [Interpretation 8889] Get the form. + { // [Interpretation 9102] Get the form. $form = $this->loadForm('com_sermondistributor.sermon', 'sermon', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) @@ -232,17 +232,17 @@ class SermondistributorModelSermon extends JModelAdmin $jinput = JFactory::getApplication()->input; - // [Interpretation 8916] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. + // [Interpretation 9129] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. if ($jinput->get('a_id')) { $id = $jinput->get('a_id', 0, 'INT'); } - // [Interpretation 8921] The back end uses id so we use that the rest of the time and set it to 0 by default. + // [Interpretation 9134] The back end uses id so we use that the rest of the time and set it to 0 by default. else { $id = $jinput->get('id', 0, 'INT'); } - // [Interpretation 8926] Determine correct permissions to check. + // [Interpretation 9139] Determine correct permissions to check. if ($this->getState('sermon.id')) { $id = $this->getState('sermon.id'); @@ -250,74 +250,74 @@ class SermondistributorModelSermon extends JModelAdmin $catid = 0; if (isset($this->getItem($id)->catid)) { - // [Interpretation 8933] set catagory id + // [Interpretation 9146] set catagory id $catid = $this->getItem($id)->catid; - // [Interpretation 8935] Existing record. Can only edit in selected categories. + // [Interpretation 9148] Existing record. Can only edit in selected categories. $form->setFieldAttribute('catid', 'action', 'core.edit'); - // [Interpretation 8937] Existing record. Can only edit own items in selected categories. + // [Interpretation 9150] Existing record. Can only edit own items in selected categories. $form->setFieldAttribute('catid', 'action', 'core.edit.own'); } } else { - // [Interpretation 8943] New record. Can only create in selected categories. + // [Interpretation 9156] New record. Can only create in selected categories. $form->setFieldAttribute('catid', 'action', 'core.create'); } $user = JFactory::getUser(); - // [Interpretation 8947] Check for existing item. - // [Interpretation 8948] Modify the form based on Edit State access controls. + // [Interpretation 9160] Check for existing item. + // [Interpretation 9161] Modify the form based on Edit State access controls. if ($id != 0 && (!$user->authorise('sermon.edit.state', 'com_sermondistributor.sermon.' . (int) $id)) || (isset($catid) && $catid != 0 && !$user->authorise('core.edit.state', 'com_sermondistributor.sermons.category.' . (int) $catid)) || ($id == 0 && !$user->authorise('sermon.edit.state', 'com_sermondistributor'))) { - // [Interpretation 8963] Disable fields for display. + // [Interpretation 9176] Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); - // [Interpretation 8966] Disable fields while saving. + // [Interpretation 9179] Disable fields while saving. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } - // [Interpretation 9007] If this is a new item insure the greated by is set. + // [Interpretation 9220] If this is a new item insure the greated by is set. if (0 == $id) { - // [Interpretation 9010] Set the created_by to this user + // [Interpretation 9223] Set the created_by to this user $form->setValue('created_by', null, $user->id); } - // [Interpretation 9013] Modify the form based on Edit Creaded By access controls. + // [Interpretation 9226] Modify the form based on Edit Creaded By access controls. if ($id != 0 && (!$user->authorise('sermon.edit.created_by', 'com_sermondistributor.sermon.' . (int) $id)) || ($id == 0 && !$user->authorise('sermon.edit.created_by', 'com_sermondistributor'))) { - // [Interpretation 9025] Disable fields for display. + // [Interpretation 9238] Disable fields for display. $form->setFieldAttribute('created_by', 'disabled', 'true'); - // [Interpretation 9027] Disable fields for display. + // [Interpretation 9240] Disable fields for display. $form->setFieldAttribute('created_by', 'readonly', 'true'); - // [Interpretation 9029] Disable fields while saving. + // [Interpretation 9242] Disable fields while saving. $form->setFieldAttribute('created_by', 'filter', 'unset'); } - // [Interpretation 9032] Modify the form based on Edit Creaded Date access controls. + // [Interpretation 9245] Modify the form based on Edit Creaded Date access controls. if ($id != 0 && (!$user->authorise('sermon.edit.created', 'com_sermondistributor.sermon.' . (int) $id)) || ($id == 0 && !$user->authorise('sermon.edit.created', 'com_sermondistributor'))) { - // [Interpretation 9044] Disable fields for display. + // [Interpretation 9257] Disable fields for display. $form->setFieldAttribute('created', 'disabled', 'true'); - // [Interpretation 9046] Disable fields while saving. + // [Interpretation 9259] Disable fields while saving. $form->setFieldAttribute('created', 'filter', 'unset'); } - // [Interpretation 9079] Only load these values if no id is found + // [Interpretation 9292] Only load these values if no id is found if (0 == $id) { - // [Interpretation 9082] Set redirected field name + // [Interpretation 9295] Set redirected field name $redirectedField = $jinput->get('ref', null, 'STRING'); - // [Interpretation 9084] Set redirected field value + // [Interpretation 9297] Set redirected field value $redirectedValue = $jinput->get('refid', 0, 'INT'); if (0 != $redirectedValue && $redirectedField) { - // [Interpretation 9088] Now set the local-redirected field default value + // [Interpretation 9301] Now set the local-redirected field default value $form->setValue($redirectedField, null, $redirectedValue); } } @@ -358,7 +358,7 @@ class SermondistributorModelSermon extends JModelAdmin if ($allow) { - // [Interpretation 9181] The record has been set. Check the record permissions. + // [Interpretation 9394] The record has been set. Check the record permissions. return $user->authorise('sermon.delete', 'com_sermondistributor.sermon.' . (int) $record->id); } return $allow; @@ -382,14 +382,14 @@ class SermondistributorModelSermon extends JModelAdmin if ($recordId) { - // [Interpretation 9254] The record has been set. Check the record permissions. + // [Interpretation 9467] The record has been set. Check the record permissions. $permission = $user->authorise('sermon.edit.state', 'com_sermondistributor.sermon.' . (int) $recordId); if (!$permission && !is_null($permission)) { return false; } } - // [Interpretation 9270] Check against the category. + // [Interpretation 9483] Check against the category. if (!empty($record->catid)) { $catpermission = $user->authorise('core.edit.state', 'com_sermondistributor.sermons.category.' . (int) $record->catid); @@ -398,7 +398,7 @@ class SermondistributorModelSermon extends JModelAdmin return false; } } - // [Interpretation 9281] In the absense of better information, revert to the component permissions. + // [Interpretation 9494] In the absense of better information, revert to the component permissions. return $user->authorise('sermon.edit.state', 'com_sermondistributor'); } @@ -413,7 +413,7 @@ class SermondistributorModelSermon extends JModelAdmin */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 9122] Check specific edit permission then general edit permission. + // [Interpretation 9335] Check specific edit permission then general edit permission. $user = JFactory::getUser(); return $user->authorise('sermon.edit', 'com_sermondistributor.sermon.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('sermon.edit', 'com_sermondistributor'); @@ -512,20 +512,20 @@ class SermondistributorModelSermon extends JModelAdmin */ public function validate($form, $data, $group = null) { - // [Interpretation 8088] check if the not_required field is set + // [Interpretation 8301] check if the not_required field is set if (SermondistributorHelper::checkString($data['not_required'])) { $requiredFields = (array) explode(',',(string) $data['not_required']); $requiredFields = array_unique($requiredFields); - // [Interpretation 8093] now change the required field attributes value + // [Interpretation 8306] now change the required field attributes value foreach ($requiredFields as $requiredField) { - // [Interpretation 8096] make sure there is a string value + // [Interpretation 8309] make sure there is a string value if (SermondistributorHelper::checkString($requiredField)) { - // [Interpretation 8099] change to false + // [Interpretation 8312] change to false $form->setFieldAttribute($requiredField, 'required', 'false'); - // [Interpretation 8101] also clear the data set + // [Interpretation 8314] also clear the data set $data[$requiredField] = ''; } } @@ -675,7 +675,7 @@ class SermondistributorModelSermon extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 4183] Set some needed variables. + // [Interpretation 4263] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -689,12 +689,12 @@ class SermondistributorModelSermon extends JModelAdmin return false; } - // [Interpretation 4203] get list of uniqe fields + // [Interpretation 4283] get list of uniqe fields $uniqeFields = $this->getUniqeFields(); - // [Interpretation 4205] remove move_copy from array + // [Interpretation 4285] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4208] make sure published is set + // [Interpretation 4288] make sure published is set if (!isset($values['published'])) { $values['published'] = 0; @@ -710,7 +710,7 @@ class SermondistributorModelSermon extends JModelAdmin } elseif (isset($values['category']) && (int) $values['category'] > 0) { - // [Interpretation 4233] move the category value to correct field name + // [Interpretation 4313] move the category value to correct field name $values['catid'] = $values['category']; unset($values['category']); } @@ -721,21 +721,21 @@ class SermondistributorModelSermon extends JModelAdmin $newIds = array(); - // [Interpretation 4245] Parent exists so let's proceed + // [Interpretation 4325] Parent exists so let's proceed while (!empty($pks)) { - // [Interpretation 4248] Pop the first ID off the stack + // [Interpretation 4328] Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); - // [Interpretation 4253] only allow copy if user may edit this item. + // [Interpretation 4333] only allow copy if user may edit this item. if (!$this->user->authorise('sermon.edit', $contexts[$pk])) { - // [Interpretation 4263] Not fatal error + // [Interpretation 4343] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); @@ -743,19 +743,19 @@ class SermondistributorModelSermon extends JModelAdmin } - // [Interpretation 4268] Check that the row actually exists + // [Interpretation 4348] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4273] Fatal error + // [Interpretation 4353] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4280] Not fatal error + // [Interpretation 4360] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } @@ -770,7 +770,7 @@ class SermondistributorModelSermon extends JModelAdmin list($this->table->name, $this->table->alias) = $this->generateNewTitle($this->table->catid, $this->table->alias, $this->table->name); } - // [Interpretation 4316] insert all set values + // [Interpretation 4396] insert all set values if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) @@ -782,7 +782,7 @@ class SermondistributorModelSermon extends JModelAdmin } } - // [Interpretation 4328] update all uniqe fields + // [Interpretation 4408] update all uniqe fields if (SermondistributorHelper::checkArray($uniqeFields)) { foreach ($uniqeFields as $uniqeField) @@ -791,13 +791,13 @@ class SermondistributorModelSermon extends JModelAdmin } } - // [Interpretation 4337] Reset the ID because we are making a copy + // [Interpretation 4417] Reset the ID because we are making a copy $this->table->id = 0; - // [Interpretation 4340] TODO: Deal with ordering? - // [Interpretation 4341] $this->table->ordering = 1; + // [Interpretation 4420] TODO: Deal with ordering? + // [Interpretation 4421] $this->table->ordering = 1; - // [Interpretation 4343] Check the row. + // [Interpretation 4423] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -810,7 +810,7 @@ class SermondistributorModelSermon extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4356] Store the row. + // [Interpretation 4436] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -818,14 +818,14 @@ class SermondistributorModelSermon extends JModelAdmin return false; } - // [Interpretation 4364] Get the new item ID + // [Interpretation 4444] Get the new item ID $newId = $this->table->get('id'); - // [Interpretation 4367] Add the new ID to the array + // [Interpretation 4447] Add the new ID to the array $newIds[$pk] = $newId; } - // [Interpretation 4371] Clean the cache + // [Interpretation 4451] Clean the cache $this->cleanCache(); return $newIds; @@ -846,7 +846,7 @@ class SermondistributorModelSermon extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 3985] Set some needed variables. + // [Interpretation 4065] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -861,12 +861,12 @@ class SermondistributorModelSermon extends JModelAdmin return false; } - // [Interpretation 4007] make sure published only updates if user has the permission. + // [Interpretation 4087] make sure published only updates if user has the permission. if (isset($values['published']) && !$this->canDo->get('sermon.edit.state')) { unset($values['published']); } - // [Interpretation 4020] remove move_copy from array + // [Interpretation 4100] remove move_copy from array unset($values['move_copy']); if (isset($values['category']) && (int) $values['category'] > 0 && !static::checkCategoryId($values['category'])) @@ -875,7 +875,7 @@ class SermondistributorModelSermon extends JModelAdmin } elseif (isset($values['category']) && (int) $values['category'] > 0) { - // [Interpretation 4031] move the category value to correct field name + // [Interpretation 4111] move the category value to correct field name $values['catid'] = $values['category']; unset($values['category']); } @@ -885,7 +885,7 @@ class SermondistributorModelSermon extends JModelAdmin } - // [Interpretation 4041] Parent exists so we proceed + // [Interpretation 4121] Parent exists so we proceed foreach ($pks as $pk) { if (!$this->user->authorise('sermon.edit', $contexts[$pk])) @@ -895,30 +895,30 @@ class SermondistributorModelSermon extends JModelAdmin return false; } - // [Interpretation 4058] Check that the row actually exists + // [Interpretation 4138] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4063] Fatal error + // [Interpretation 4143] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4070] Not fatal error + // [Interpretation 4150] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } - // [Interpretation 4076] insert all set values. + // [Interpretation 4156] insert all set values. if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) { - // [Interpretation 4081] Do special action for access. + // [Interpretation 4161] Do special action for access. if ('access' == $key && strlen($value) > 0) { $this->table->$key = $value; @@ -931,7 +931,7 @@ class SermondistributorModelSermon extends JModelAdmin } - // [Interpretation 4093] Check the row. + // [Interpretation 4173] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -944,7 +944,7 @@ class SermondistributorModelSermon extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4106] Store the row. + // [Interpretation 4186] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -953,7 +953,7 @@ class SermondistributorModelSermon extends JModelAdmin } } - // [Interpretation 4115] Clean the cache + // [Interpretation 4195] Clean the cache $this->cleanCache(); return true; @@ -983,13 +983,13 @@ class SermondistributorModelSermon extends JModelAdmin $data['metadata'] = (string) $metadata; } - // [Interpretation 3297] Set the local_files string to JSON string. + // [Interpretation 3377] Set the local_files string to JSON string. if (isset($data['local_files'])) { $data['local_files'] = (string) json_encode($data['local_files']); } - // [Interpretation 3297] Set the manual_files string to JSON string. + // [Interpretation 3377] Set the manual_files string to JSON string. if (isset($data['manual_files'])) { $data['manual_files'] = (string) json_encode($data['manual_files']); @@ -1003,7 +1003,7 @@ class SermondistributorModelSermon extends JModelAdmin $data['params'] = (string) $params; } - // [Interpretation 4397] Alter the name for save as copy + // [Interpretation 4477] Alter the name for save as copy if ($input->get('task') == 'save2copy') { $origTable = clone $this->getTable(); @@ -1026,7 +1026,7 @@ class SermondistributorModelSermon extends JModelAdmin $data['published'] = 0; } - // [Interpretation 4424] Automatic handling of alias for empty fields + // [Interpretation 4504] Automatic handling of alias for empty fields if (in_array($input->get('task'), array('apply', 'save', 'save2new')) && (int) $input->get('id') == 0) { if ($data['alias'] == null) @@ -1057,10 +1057,10 @@ class SermondistributorModelSermon extends JModelAdmin } } - // [Interpretation 4463] Alter the uniqe field for save as copy + // [Interpretation 4543] Alter the uniqe field for save as copy if ($input->get('task') == 'save2copy') { - // [Interpretation 4466] Automatic handling of other uniqe fields + // [Interpretation 4546] Automatic handling of other uniqe fields $uniqeFields = $this->getUniqeFields(); if (SermondistributorHelper::checkArray($uniqeFields)) { @@ -1114,7 +1114,7 @@ class SermondistributorModelSermon extends JModelAdmin protected function _generateNewTitle($alias, $title) { - // [Interpretation 4497] Alter the title & alias + // [Interpretation 4577] Alter the title & alias $table = $this->getTable(); while ($table->load(array('alias' => $alias))) diff --git a/admin/models/sermondistributor.php b/admin/models/sermondistributor.php index f531429d..9c48b1fa 100644 --- a/admin/models/sermondistributor.php +++ b/admin/models/sermondistributor.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermondistributor.php @@ -45,7 +45,7 @@ class SermondistributorModelSermondistributor extends JModelList $viewGroups = array( 'main' => array('png.preacher.add', 'png.preachers', 'png.sermon.add', 'png.sermons', 'png.sermons.catid', 'png.series.add', 'png.series_list', 'png.statistics', 'png.help_documents') ); - // [Interpretation 10340] view access array + // [Interpretation 10559] view access array $viewAccess = array( 'preacher.create' => 'preacher.create', 'preachers.access' => 'preacher.access', diff --git a/admin/models/sermons.php b/admin/models/sermons.php index 45f9795f..7f76d231 100644 --- a/admin/models/sermons.php +++ b/admin/models/sermons.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermons.php @@ -129,16 +129,16 @@ class SermondistributorModelSermons extends JModelList */ public function getItems() { - // [Interpretation 9883] check in items + // [Interpretation 10096] check in items $this->checkInNow(); // load parent items $items = parent::getItems(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -152,14 +152,14 @@ class SermondistributorModelSermons extends JModelList } } - // [Interpretation 10224] set selection value to a translatable value + // [Interpretation 10443] set selection value to a translatable value if (SermondistributorHelper::checkArray($items)) { foreach ($items as $nr => &$item) { - // [Interpretation 10231] convert link_type + // [Interpretation 10450] convert link_type $item->link_type = $this->selectionTranslation($item->link_type, 'link_type'); - // [Interpretation 10231] convert source + // [Interpretation 10450] convert source $item->source = $this->selectionTranslation($item->source, 'source'); } } @@ -176,20 +176,20 @@ class SermondistributorModelSermons extends JModelList */ public function selectionTranslation($value,$name) { - // [Interpretation 10257] Array of link_type language strings + // [Interpretation 10476] Array of link_type language strings if ($name == 'link_type') { $link_typeArray = array( 1 => 'COM_SERMONDISTRIBUTOR_SERMON_ENCRYPTED', 2 => 'COM_SERMONDISTRIBUTOR_SERMON_DIRECT' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($link_typeArray[$value]) && SermondistributorHelper::checkString($link_typeArray[$value])) { return $link_typeArray[$value]; } } - // [Interpretation 10257] Array of source language strings + // [Interpretation 10476] Array of source language strings if ($name == 'source') { $sourceArray = array( @@ -198,7 +198,7 @@ class SermondistributorModelSermons extends JModelList 2 => 'COM_SERMONDISTRIBUTOR_SERMON_DROPBOX', 3 => 'COM_SERMONDISTRIBUTOR_SERMON_URL' ); - // [Interpretation 10288] Now check if value is found in this array + // [Interpretation 10507] Now check if value is found in this array if (isset($sourceArray[$value]) && SermondistributorHelper::checkString($sourceArray[$value])) { return $sourceArray[$value]; @@ -214,29 +214,29 @@ class SermondistributorModelSermons extends JModelList */ protected function getListQuery() { - // [Interpretation 6833] Get the user object. + // [Interpretation 6981] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6835] Create a new query object. + // [Interpretation 6983] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6838] Select some fields + // [Interpretation 6986] Select some fields $query->select('a.*'); $query->select($db->quoteName('c.title','category_title')); - // [Interpretation 6845] From the sermondistributor_item table + // [Interpretation 6993] From the sermondistributor_item table $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); $query->join('LEFT', $db->quoteName('#__categories', 'c') . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('c.id') . ')'); - // [Interpretation 6986] From the sermondistributor_preacher table. + // [Interpretation 7134] From the sermondistributor_preacher table. $query->select($db->quoteName('g.name','preacher_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_preacher', 'g') . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('g.id') . ')'); - // [Interpretation 6986] From the sermondistributor_series table. + // [Interpretation 7134] From the sermondistributor_series table. $query->select($db->quoteName('h.name','series_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_series', 'h') . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('h.id') . ')'); - // [Interpretation 6859] Filter by published state + // [Interpretation 7007] Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { @@ -247,21 +247,21 @@ class SermondistributorModelSermons extends JModelList $query->where('(a.published = 0 OR a.published = 1)'); } - // [Interpretation 6871] Join over the asset groups. + // [Interpretation 7019] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6874] Filter by access level. + // [Interpretation 7022] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6879] Implement View Level Access + // [Interpretation 7027] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6956] Filter by search. + // [Interpretation 7104] Filter by search. $search = $this->getState('filter.search'); if (!empty($search)) { @@ -276,28 +276,28 @@ class SermondistributorModelSermons extends JModelList } } - // [Interpretation 7072] Filter by preacher. + // [Interpretation 7278] Filter by preacher. if ($preacher = $this->getState('filter.preacher')) { $query->where('a.preacher = ' . $db->quote($db->escape($preacher, true))); } - // [Interpretation 7072] Filter by series. + // [Interpretation 7278] Filter by series. if ($series = $this->getState('filter.series')) { $query->where('a.series = ' . $db->quote($db->escape($series, true))); } - // [Interpretation 7081] Filter by Link_type. + // [Interpretation 7287] Filter by Link_type. if ($link_type = $this->getState('filter.link_type')) { $query->where('a.link_type = ' . $db->quote($db->escape($link_type, true))); } - // [Interpretation 7081] Filter by Source. + // [Interpretation 7287] Filter by Source. if ($source = $this->getState('filter.source')) { $query->where('a.source = ' . $db->quote($db->escape($source, true))); } - // [Interpretation 6893] Filter by a single or group of categories. + // [Interpretation 7041] Filter by a single or group of categories. $baselevel = 1; $categoryId = $this->getState('filter.category_id'); @@ -319,7 +319,7 @@ class SermondistributorModelSermons extends JModelList } - // [Interpretation 6915] Add the list ordering clause. + // [Interpretation 7063] Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'a.id'); $orderDirn = $this->state->get('list.direction', 'asc'); if ($orderCol != '') @@ -337,42 +337,42 @@ class SermondistributorModelSermons extends JModelList */ public function getExportData($pks) { - // [Interpretation 6623] setup the query + // [Interpretation 6718] setup the query if (SermondistributorHelper::checkArray($pks)) { - // [Interpretation 6626] Get the user object. + // [Interpretation 6721] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6628] Create a new query object. + // [Interpretation 6723] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6631] Select some fields + // [Interpretation 6726] Select some fields $query->select('a.*'); - // [Interpretation 6633] From the sermondistributor_sermon table + // [Interpretation 6728] From the sermondistributor_sermon table $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); $query->where('a.id IN (' . implode(',',$pks) . ')'); - // [Interpretation 6643] Implement View Level Access + // [Interpretation 6738] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6650] Order the results by ordering + // [Interpretation 6745] Order the results by ordering $query->order('a.ordering ASC'); - // [Interpretation 6652] Load the items + // [Interpretation 6747] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -383,13 +383,13 @@ class SermondistributorModelSermons extends JModelList continue; } - // [Interpretation 10171] unset the values we don't want exported. + // [Interpretation 10390] unset the values we don't want exported. unset($item->asset_id); unset($item->checked_out); unset($item->checked_out_time); } } - // [Interpretation 10180] Add headers to items array. + // [Interpretation 10399] Add headers to items array. $headers = $this->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { @@ -408,13 +408,13 @@ class SermondistributorModelSermons extends JModelList */ public function getExImPortHeaders() { - // [Interpretation 6672] Get a db connection. + // [Interpretation 6767] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 6674] get the columns + // [Interpretation 6769] get the columns $columns = $db->getTableColumns("#__sermondistributor_sermon"); if (SermondistributorHelper::checkArray($columns)) { - // [Interpretation 6678] remove the headers you don't import/export. + // [Interpretation 6773] remove the headers you don't import/export. unset($columns['asset_id']); unset($columns['checked_out']); unset($columns['checked_out_time']); @@ -436,7 +436,7 @@ class SermondistributorModelSermons extends JModelList */ protected function getStoreId($id = '') { - // [Interpretation 9506] Compile the store id. + // [Interpretation 9719] Compile the store id. $id .= ':' . $this->getState('filter.id'); $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.published'); @@ -464,15 +464,15 @@ class SermondistributorModelSermons extends JModelList */ protected function checkInNow() { - // [Interpretation 9899] Get set check in time + // [Interpretation 10112] Get set check in time $time = JComponentHelper::getParams('com_sermondistributor')->get('check_in'); if ($time) { - // [Interpretation 9904] Get a db connection. + // [Interpretation 10117] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 9906] reset query + // [Interpretation 10119] reset query $query = $db->getQuery(true); $query->select('*'); $query->from($db->quoteName('#__sermondistributor_sermon')); @@ -480,24 +480,24 @@ class SermondistributorModelSermons extends JModelList $db->execute(); if ($db->getNumRows()) { - // [Interpretation 9914] Get Yesterdays date + // [Interpretation 10127] Get Yesterdays date $date = JFactory::getDate()->modify($time)->toSql(); - // [Interpretation 9916] reset query + // [Interpretation 10129] reset query $query = $db->getQuery(true); - // [Interpretation 9918] Fields to update. + // [Interpretation 10131] Fields to update. $fields = array( $db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'', $db->quoteName('checked_out') . '=0' ); - // [Interpretation 9923] Conditions for which records should be updated. + // [Interpretation 10136] Conditions for which records should be updated. $conditions = array( $db->quoteName('checked_out') . '!=0', $db->quoteName('checked_out_time') . '<\''.$date.'\'' ); - // [Interpretation 9928] Check table + // [Interpretation 10141] Check table $query->update($db->quoteName('#__sermondistributor_sermon'))->set($fields)->where($conditions); $db->setQuery($query); diff --git a/admin/models/statistic.php b/admin/models/statistic.php index 84882fcc..465605f7 100644 --- a/admin/models/statistic.php +++ b/admin/models/statistic.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage statistic.php @@ -116,7 +116,7 @@ class SermondistributorModelStatistic extends JModelAdmin * @since 1.6 */ public function getForm($data = array(), $loadData = true) - { // [Interpretation 8889] Get the form. + { // [Interpretation 9102] Get the form. $form = $this->loadForm('com_sermondistributor.statistic', 'statistic', array('control' => 'jform', 'load_data' => $loadData)); if (empty($form)) @@ -126,12 +126,12 @@ class SermondistributorModelStatistic extends JModelAdmin $jinput = JFactory::getApplication()->input; - // [Interpretation 8974] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. + // [Interpretation 9187] The front end calls this model and uses a_id to avoid id clashes so we need to check for that first. if ($jinput->get('a_id')) { $id = $jinput->get('a_id', 0, 'INT'); } - // [Interpretation 8979] The back end uses id so we use that the rest of the time and set it to 0 by default. + // [Interpretation 9192] The back end uses id so we use that the rest of the time and set it to 0 by default. else { $id = $jinput->get('id', 0, 'INT'); @@ -139,54 +139,54 @@ class SermondistributorModelStatistic extends JModelAdmin $user = JFactory::getUser(); - // [Interpretation 8985] Check for existing item. - // [Interpretation 8986] Modify the form based on Edit State access controls. + // [Interpretation 9198] Check for existing item. + // [Interpretation 9199] Modify the form based on Edit State access controls. if ($id != 0 && (!$user->authorise('statistic.edit.state', 'com_sermondistributor.statistic.' . (int) $id)) || ($id == 0 && !$user->authorise('statistic.edit.state', 'com_sermondistributor'))) { - // [Interpretation 8999] Disable fields for display. + // [Interpretation 9212] Disable fields for display. $form->setFieldAttribute('ordering', 'disabled', 'true'); $form->setFieldAttribute('published', 'disabled', 'true'); - // [Interpretation 9002] Disable fields while saving. + // [Interpretation 9215] Disable fields while saving. $form->setFieldAttribute('ordering', 'filter', 'unset'); $form->setFieldAttribute('published', 'filter', 'unset'); } - // [Interpretation 9007] If this is a new item insure the greated by is set. + // [Interpretation 9220] If this is a new item insure the greated by is set. if (0 == $id) { - // [Interpretation 9010] Set the created_by to this user + // [Interpretation 9223] Set the created_by to this user $form->setValue('created_by', null, $user->id); } - // [Interpretation 9013] Modify the form based on Edit Creaded By access controls. + // [Interpretation 9226] Modify the form based on Edit Creaded By access controls. if ($id != 0 && (!$user->authorise('statistic.edit.created_by', 'com_sermondistributor.statistic.' . (int) $id)) || ($id == 0 && !$user->authorise('statistic.edit.created_by', 'com_sermondistributor'))) { - // [Interpretation 9025] Disable fields for display. + // [Interpretation 9238] Disable fields for display. $form->setFieldAttribute('created_by', 'disabled', 'true'); - // [Interpretation 9027] Disable fields for display. + // [Interpretation 9240] Disable fields for display. $form->setFieldAttribute('created_by', 'readonly', 'true'); - // [Interpretation 9029] Disable fields while saving. + // [Interpretation 9242] Disable fields while saving. $form->setFieldAttribute('created_by', 'filter', 'unset'); } - // [Interpretation 9032] Modify the form based on Edit Creaded Date access controls. + // [Interpretation 9245] Modify the form based on Edit Creaded Date access controls. if ($id != 0 && (!$user->authorise('statistic.edit.created', 'com_sermondistributor.statistic.' . (int) $id)) || ($id == 0 && !$user->authorise('statistic.edit.created', 'com_sermondistributor'))) { - // [Interpretation 9044] Disable fields for display. + // [Interpretation 9257] Disable fields for display. $form->setFieldAttribute('created', 'disabled', 'true'); - // [Interpretation 9046] Disable fields while saving. + // [Interpretation 9259] Disable fields while saving. $form->setFieldAttribute('created', 'filter', 'unset'); } - // [Interpretation 9079] Only load these values if no id is found + // [Interpretation 9292] Only load these values if no id is found if (0 == $id) { - // [Interpretation 9082] Set redirected field name + // [Interpretation 9295] Set redirected field name $redirectedField = $jinput->get('ref', null, 'STRING'); - // [Interpretation 9084] Set redirected field value + // [Interpretation 9297] Set redirected field value $redirectedValue = $jinput->get('refid', 0, 'INT'); if (0 != $redirectedValue && $redirectedField) { - // [Interpretation 9088] Now set the local-redirected field default value + // [Interpretation 9301] Now set the local-redirected field default value $form->setValue($redirectedField, null, $redirectedValue); } } @@ -223,7 +223,7 @@ class SermondistributorModelStatistic extends JModelAdmin } $user = JFactory::getUser(); - // [Interpretation 9210] The record has been set. Check the record permissions. + // [Interpretation 9423] The record has been set. Check the record permissions. return $user->authorise('statistic.delete', 'com_sermondistributor.statistic.' . (int) $record->id); } return false; @@ -245,14 +245,14 @@ class SermondistributorModelStatistic extends JModelAdmin if ($recordId) { - // [Interpretation 9297] The record has been set. Check the record permissions. + // [Interpretation 9510] The record has been set. Check the record permissions. $permission = $user->authorise('statistic.edit.state', 'com_sermondistributor.statistic.' . (int) $recordId); if (!$permission && !is_null($permission)) { return false; } } - // [Interpretation 9314] In the absense of better information, revert to the component permissions. + // [Interpretation 9527] In the absense of better information, revert to the component permissions. return $user->authorise('statistic.edit.state', 'com_sermondistributor'); } @@ -267,7 +267,7 @@ class SermondistributorModelStatistic extends JModelAdmin */ protected function allowEdit($data = array(), $key = 'id') { - // [Interpretation 9122] Check specific edit permission then general edit permission. + // [Interpretation 9335] Check specific edit permission then general edit permission. $user = JFactory::getUser(); return $user->authorise('statistic.edit', 'com_sermondistributor.statistic.'. ((int) isset($data[$key]) ? $data[$key] : 0)) or $user->authorise('statistic.edit', 'com_sermondistributor'); @@ -493,7 +493,7 @@ class SermondistributorModelStatistic extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 4183] Set some needed variables. + // [Interpretation 4263] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -507,12 +507,12 @@ class SermondistributorModelStatistic extends JModelAdmin return false; } - // [Interpretation 4203] get list of uniqe fields + // [Interpretation 4283] get list of uniqe fields $uniqeFields = $this->getUniqeFields(); - // [Interpretation 4205] remove move_copy from array + // [Interpretation 4285] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4208] make sure published is set + // [Interpretation 4288] make sure published is set if (!isset($values['published'])) { $values['published'] = 0; @@ -524,21 +524,21 @@ class SermondistributorModelStatistic extends JModelAdmin $newIds = array(); - // [Interpretation 4245] Parent exists so let's proceed + // [Interpretation 4325] Parent exists so let's proceed while (!empty($pks)) { - // [Interpretation 4248] Pop the first ID off the stack + // [Interpretation 4328] Pop the first ID off the stack $pk = array_shift($pks); $this->table->reset(); - // [Interpretation 4253] only allow copy if user may edit this item. + // [Interpretation 4333] only allow copy if user may edit this item. if (!$this->user->authorise('statistic.edit', $contexts[$pk])) { - // [Interpretation 4263] Not fatal error + // [Interpretation 4343] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); @@ -546,19 +546,19 @@ class SermondistributorModelStatistic extends JModelAdmin } - // [Interpretation 4268] Check that the row actually exists + // [Interpretation 4348] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4273] Fatal error + // [Interpretation 4353] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4280] Not fatal error + // [Interpretation 4360] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } @@ -566,7 +566,7 @@ class SermondistributorModelStatistic extends JModelAdmin $this->table->filename = $this->generateUniqe('filename',$this->table->filename); - // [Interpretation 4316] insert all set values + // [Interpretation 4396] insert all set values if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) @@ -578,7 +578,7 @@ class SermondistributorModelStatistic extends JModelAdmin } } - // [Interpretation 4328] update all uniqe fields + // [Interpretation 4408] update all uniqe fields if (SermondistributorHelper::checkArray($uniqeFields)) { foreach ($uniqeFields as $uniqeField) @@ -587,13 +587,13 @@ class SermondistributorModelStatistic extends JModelAdmin } } - // [Interpretation 4337] Reset the ID because we are making a copy + // [Interpretation 4417] Reset the ID because we are making a copy $this->table->id = 0; - // [Interpretation 4340] TODO: Deal with ordering? - // [Interpretation 4341] $this->table->ordering = 1; + // [Interpretation 4420] TODO: Deal with ordering? + // [Interpretation 4421] $this->table->ordering = 1; - // [Interpretation 4343] Check the row. + // [Interpretation 4423] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -606,7 +606,7 @@ class SermondistributorModelStatistic extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4356] Store the row. + // [Interpretation 4436] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -614,14 +614,14 @@ class SermondistributorModelStatistic extends JModelAdmin return false; } - // [Interpretation 4364] Get the new item ID + // [Interpretation 4444] Get the new item ID $newId = $this->table->get('id'); - // [Interpretation 4367] Add the new ID to the array + // [Interpretation 4447] Add the new ID to the array $newIds[$pk] = $newId; } - // [Interpretation 4371] Clean the cache + // [Interpretation 4451] Clean the cache $this->cleanCache(); return $newIds; @@ -642,7 +642,7 @@ class SermondistributorModelStatistic extends JModelAdmin { if (empty($this->batchSet)) { - // [Interpretation 3985] Set some needed variables. + // [Interpretation 4065] Set some needed variables. $this->user = JFactory::getUser(); $this->table = $this->getTable(); $this->tableClassName = get_class($this->table); @@ -657,15 +657,15 @@ class SermondistributorModelStatistic extends JModelAdmin return false; } - // [Interpretation 4007] make sure published only updates if user has the permission. + // [Interpretation 4087] make sure published only updates if user has the permission. if (isset($values['published']) && !$this->canDo->get('statistic.edit.state')) { unset($values['published']); } - // [Interpretation 4020] remove move_copy from array + // [Interpretation 4100] remove move_copy from array unset($values['move_copy']); - // [Interpretation 4041] Parent exists so we proceed + // [Interpretation 4121] Parent exists so we proceed foreach ($pks as $pk) { if (!$this->user->authorise('statistic.edit', $contexts[$pk])) @@ -675,30 +675,30 @@ class SermondistributorModelStatistic extends JModelAdmin return false; } - // [Interpretation 4058] Check that the row actually exists + // [Interpretation 4138] Check that the row actually exists if (!$this->table->load($pk)) { if ($error = $this->table->getError()) { - // [Interpretation 4063] Fatal error + // [Interpretation 4143] Fatal error $this->setError($error); return false; } else { - // [Interpretation 4070] Not fatal error + // [Interpretation 4150] Not fatal error $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_BATCH_MOVE_ROW_NOT_FOUND', $pk)); continue; } } - // [Interpretation 4076] insert all set values. + // [Interpretation 4156] insert all set values. if (SermondistributorHelper::checkArray($values)) { foreach ($values as $key => $value) { - // [Interpretation 4081] Do special action for access. + // [Interpretation 4161] Do special action for access. if ('access' == $key && strlen($value) > 0) { $this->table->$key = $value; @@ -711,7 +711,7 @@ class SermondistributorModelStatistic extends JModelAdmin } - // [Interpretation 4093] Check the row. + // [Interpretation 4173] Check the row. if (!$this->table->check()) { $this->setError($this->table->getError()); @@ -724,7 +724,7 @@ class SermondistributorModelStatistic extends JModelAdmin $this->createTagsHelper($this->tagsObserver, $this->type, $pk, $this->typeAlias, $this->table); } - // [Interpretation 4106] Store the row. + // [Interpretation 4186] Store the row. if (!$this->table->store()) { $this->setError($this->table->getError()); @@ -733,7 +733,7 @@ class SermondistributorModelStatistic extends JModelAdmin } } - // [Interpretation 4115] Clean the cache + // [Interpretation 4195] Clean the cache $this->cleanCache(); return true; @@ -771,10 +771,10 @@ class SermondistributorModelStatistic extends JModelAdmin $data['params'] = (string) $params; } - // [Interpretation 4463] Alter the uniqe field for save as copy + // [Interpretation 4543] Alter the uniqe field for save as copy if ($input->get('task') == 'save2copy') { - // [Interpretation 4466] Automatic handling of other uniqe fields + // [Interpretation 4546] Automatic handling of other uniqe fields $uniqeFields = $this->getUniqeFields(); if (SermondistributorHelper::checkArray($uniqeFields)) { @@ -827,7 +827,7 @@ class SermondistributorModelStatistic extends JModelAdmin protected function _generateNewTitle($title) { - // [Interpretation 4521] Alter the title + // [Interpretation 4601] Alter the title $table = $this->getTable(); while ($table->load(array('title' => $title))) diff --git a/admin/models/statistics.php b/admin/models/statistics.php index 555e81ca..f2bb981c 100644 --- a/admin/models/statistics.php +++ b/admin/models/statistics.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage statistics.php @@ -113,16 +113,16 @@ class SermondistributorModelStatistics extends JModelList */ public function getItems() { - // [Interpretation 9883] check in items + // [Interpretation 10096] check in items $this->checkInNow(); // load parent items $items = parent::getItems(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -147,31 +147,31 @@ class SermondistributorModelStatistics extends JModelList */ protected function getListQuery() { - // [Interpretation 6833] Get the user object. + // [Interpretation 6981] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6835] Create a new query object. + // [Interpretation 6983] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6838] Select some fields + // [Interpretation 6986] Select some fields $query->select('a.*'); - // [Interpretation 6845] From the sermondistributor_item table + // [Interpretation 6993] From the sermondistributor_item table $query->from($db->quoteName('#__sermondistributor_statistic', 'a')); - // [Interpretation 6986] From the sermondistributor_sermon table. + // [Interpretation 7134] From the sermondistributor_sermon table. $query->select($db->quoteName('g.name','sermon_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_sermon', 'g') . ' ON (' . $db->quoteName('a.sermon') . ' = ' . $db->quoteName('g.id') . ')'); - // [Interpretation 6986] From the sermondistributor_preacher table. + // [Interpretation 7134] From the sermondistributor_preacher table. $query->select($db->quoteName('h.name','preacher_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_preacher', 'h') . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('h.id') . ')'); - // [Interpretation 6986] From the sermondistributor_series table. + // [Interpretation 7134] From the sermondistributor_series table. $query->select($db->quoteName('i.name','series_name')); $query->join('LEFT', $db->quoteName('#__sermondistributor_series', 'i') . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('i.id') . ')'); - // [Interpretation 6859] Filter by published state + // [Interpretation 7007] Filter by published state $published = $this->getState('filter.published'); if (is_numeric($published)) { @@ -182,21 +182,21 @@ class SermondistributorModelStatistics extends JModelList $query->where('(a.published = 0 OR a.published = 1)'); } - // [Interpretation 6871] Join over the asset groups. + // [Interpretation 7019] Join over the asset groups. $query->select('ag.title AS access_level'); $query->join('LEFT', '#__viewlevels AS ag ON ag.id = a.access'); - // [Interpretation 6874] Filter by access level. + // [Interpretation 7022] Filter by access level. if ($access = $this->getState('filter.access')) { $query->where('a.access = ' . (int) $access); } - // [Interpretation 6879] Implement View Level Access + // [Interpretation 7027] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6956] Filter by search. + // [Interpretation 7104] Filter by search. $search = $this->getState('filter.search'); if (!empty($search)) { @@ -211,23 +211,23 @@ class SermondistributorModelStatistics extends JModelList } } - // [Interpretation 7072] Filter by sermon. + // [Interpretation 7278] Filter by sermon. if ($sermon = $this->getState('filter.sermon')) { $query->where('a.sermon = ' . $db->quote($db->escape($sermon, true))); } - // [Interpretation 7072] Filter by preacher. + // [Interpretation 7278] Filter by preacher. if ($preacher = $this->getState('filter.preacher')) { $query->where('a.preacher = ' . $db->quote($db->escape($preacher, true))); } - // [Interpretation 7072] Filter by series. + // [Interpretation 7278] Filter by series. if ($series = $this->getState('filter.series')) { $query->where('a.series = ' . $db->quote($db->escape($series, true))); } - // [Interpretation 6915] Add the list ordering clause. + // [Interpretation 7063] Add the list ordering clause. $orderCol = $this->state->get('list.ordering', 'a.id'); $orderDirn = $this->state->get('list.direction', 'asc'); if ($orderCol != '') @@ -245,42 +245,42 @@ class SermondistributorModelStatistics extends JModelList */ public function getExportData($pks) { - // [Interpretation 6623] setup the query + // [Interpretation 6718] setup the query if (SermondistributorHelper::checkArray($pks)) { - // [Interpretation 6626] Get the user object. + // [Interpretation 6721] Get the user object. $user = JFactory::getUser(); - // [Interpretation 6628] Create a new query object. + // [Interpretation 6723] Create a new query object. $db = JFactory::getDBO(); $query = $db->getQuery(true); - // [Interpretation 6631] Select some fields + // [Interpretation 6726] Select some fields $query->select('a.*'); - // [Interpretation 6633] From the sermondistributor_statistic table + // [Interpretation 6728] From the sermondistributor_statistic table $query->from($db->quoteName('#__sermondistributor_statistic', 'a')); $query->where('a.id IN (' . implode(',',$pks) . ')'); - // [Interpretation 6643] Implement View Level Access + // [Interpretation 6738] Implement View Level Access if (!$user->authorise('core.options', 'com_sermondistributor')) { $groups = implode(',', $user->getAuthorisedViewLevels()); $query->where('a.access IN (' . $groups . ')'); } - // [Interpretation 6650] Order the results by ordering + // [Interpretation 6745] Order the results by ordering $query->order('a.ordering ASC'); - // [Interpretation 6652] Load the items + // [Interpretation 6747] Load the items $db->setQuery($query); $db->execute(); if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 9958] set values to display correctly. + // [Interpretation 10171] set values to display correctly. if (SermondistributorHelper::checkArray($items)) { - // [Interpretation 9961] get user object. + // [Interpretation 10174] get user object. $user = JFactory::getUser(); foreach ($items as $nr => &$item) { @@ -291,13 +291,13 @@ class SermondistributorModelStatistics extends JModelList continue; } - // [Interpretation 10171] unset the values we don't want exported. + // [Interpretation 10390] unset the values we don't want exported. unset($item->asset_id); unset($item->checked_out); unset($item->checked_out_time); } } - // [Interpretation 10180] Add headers to items array. + // [Interpretation 10399] Add headers to items array. $headers = $this->getExImPortHeaders(); if (SermondistributorHelper::checkObject($headers)) { @@ -316,13 +316,13 @@ class SermondistributorModelStatistics extends JModelList */ public function getExImPortHeaders() { - // [Interpretation 6672] Get a db connection. + // [Interpretation 6767] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 6674] get the columns + // [Interpretation 6769] get the columns $columns = $db->getTableColumns("#__sermondistributor_statistic"); if (SermondistributorHelper::checkArray($columns)) { - // [Interpretation 6678] remove the headers you don't import/export. + // [Interpretation 6773] remove the headers you don't import/export. unset($columns['asset_id']); unset($columns['checked_out']); unset($columns['checked_out_time']); @@ -344,7 +344,7 @@ class SermondistributorModelStatistics extends JModelList */ protected function getStoreId($id = '') { - // [Interpretation 9506] Compile the store id. + // [Interpretation 9719] Compile the store id. $id .= ':' . $this->getState('filter.id'); $id .= ':' . $this->getState('filter.search'); $id .= ':' . $this->getState('filter.published'); @@ -368,15 +368,15 @@ class SermondistributorModelStatistics extends JModelList */ protected function checkInNow() { - // [Interpretation 9899] Get set check in time + // [Interpretation 10112] Get set check in time $time = JComponentHelper::getParams('com_sermondistributor')->get('check_in'); if ($time) { - // [Interpretation 9904] Get a db connection. + // [Interpretation 10117] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 9906] reset query + // [Interpretation 10119] reset query $query = $db->getQuery(true); $query->select('*'); $query->from($db->quoteName('#__sermondistributor_statistic')); @@ -384,24 +384,24 @@ class SermondistributorModelStatistics extends JModelList $db->execute(); if ($db->getNumRows()) { - // [Interpretation 9914] Get Yesterdays date + // [Interpretation 10127] Get Yesterdays date $date = JFactory::getDate()->modify($time)->toSql(); - // [Interpretation 9916] reset query + // [Interpretation 10129] reset query $query = $db->getQuery(true); - // [Interpretation 9918] Fields to update. + // [Interpretation 10131] Fields to update. $fields = array( $db->quoteName('checked_out_time') . '=\'0000-00-00 00:00:00\'', $db->quoteName('checked_out') . '=0' ); - // [Interpretation 9923] Conditions for which records should be updated. + // [Interpretation 10136] Conditions for which records should be updated. $conditions = array( $db->quoteName('checked_out') . '!=0', $db->quoteName('checked_out_time') . '<\''.$date.'\'' ); - // [Interpretation 9928] Check table + // [Interpretation 10141] Check table $query->update($db->quoteName('#__sermondistributor_statistic'))->set($fields)->where($conditions); $db->setQuery($query); diff --git a/admin/sermondistributor.php b/admin/sermondistributor.php index 3bf3a5ae..2a8121fd 100644 --- a/admin/sermondistributor.php +++ b/admin/sermondistributor.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermondistributor.php @@ -43,7 +43,7 @@ $document->addStyleSheet('components/com_sermondistributor/assets/css/admin.css' $document->addScript('components/com_sermondistributor/assets/js/admin.js'); // require helper files -JLoader::register('SermondistributorHelper', dirname(__FILE__) . '/helpers/sermondistributor.php'); +JLoader::register('SermondistributorHelper', dirname(__FILE__) . '/helpers/sermondistributor.php'); JLoader::register('JHtmlBatch_', dirname(__FILE__) . '/helpers/html/batch_.php'); // Triger the Global Admin Event diff --git a/admin/tables/help_document.php b/admin/tables/help_document.php index 64fb8179..66b8e429 100644 --- a/admin/tables/help_document.php +++ b/admin/tables/help_document.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help_document.php @@ -53,7 +53,7 @@ class SermondistributorTableHelp_document extends JTable { parent::__construct('#__sermondistributor_help_document', 'id', $db); - // [Interpretation 3405] Adding History Options + // [Interpretation 3485] Adding History Options JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_sermondistributor.help_document')); } diff --git a/admin/tables/preacher.php b/admin/tables/preacher.php index a647de42..bebd5588 100644 --- a/admin/tables/preacher.php +++ b/admin/tables/preacher.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacher.php @@ -53,7 +53,7 @@ class SermondistributorTablePreacher extends JTable { parent::__construct('#__sermondistributor_preacher', 'id', $db); - // [Interpretation 3405] Adding History Options + // [Interpretation 3485] Adding History Options JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_sermondistributor.preacher')); } diff --git a/admin/tables/series.php b/admin/tables/series.php index 908ae046..be4f1b8c 100644 --- a/admin/tables/series.php +++ b/admin/tables/series.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series.php @@ -53,7 +53,7 @@ class SermondistributorTableSeries extends JTable { parent::__construct('#__sermondistributor_series', 'id', $db); - // [Interpretation 3405] Adding History Options + // [Interpretation 3485] Adding History Options JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_sermondistributor.series')); } diff --git a/admin/tables/sermon.php b/admin/tables/sermon.php index ae7d48d7..21be7d93 100644 --- a/admin/tables/sermon.php +++ b/admin/tables/sermon.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermon.php @@ -53,10 +53,10 @@ class SermondistributorTableSermon extends JTable { parent::__construct('#__sermondistributor_sermon', 'id', $db); - // [Interpretation 3399] Adding Tag Options + // [Interpretation 3479] Adding Tag Options JTableObserverTags::createObserver($this, array('typeAlias' => 'com_sermondistributor.sermon')); - // [Interpretation 3405] Adding History Options + // [Interpretation 3485] Adding History Options JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_sermondistributor.sermon')); } diff --git a/admin/tables/statistic.php b/admin/tables/statistic.php index c85a405b..51fc6d40 100644 --- a/admin/tables/statistic.php +++ b/admin/tables/statistic.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage statistic.php @@ -53,7 +53,7 @@ class SermondistributorTableStatistic extends JTable { parent::__construct('#__sermondistributor_statistic', 'id', $db); - // [Interpretation 3405] Adding History Options + // [Interpretation 3485] Adding History Options JTableObserverContenthistory::createObserver($this, array('typeAlias' => 'com_sermondistributor.statistic')); } diff --git a/admin/views/help_document/submitbutton.js b/admin/views/help_document/submitbutton.js index 3ec7085e..bb256de9 100644 --- a/admin/views/help_document/submitbutton.js +++ b/admin/views/help_document/submitbutton.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage submitbutton.js diff --git a/admin/views/help_document/tmpl/edit.php b/admin/views/help_document/tmpl/edit.php index eca17079..2ac87912 100644 --- a/admin/views/help_document/tmpl/edit.php +++ b/admin/views/help_document/tmpl/edit.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage edit.php diff --git a/admin/views/help_document/view.html.php b/admin/views/help_document/view.html.php index 04e93968..9c5e752b 100644 --- a/admin/views/help_document/view.html.php +++ b/admin/views/help_document/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -92,27 +92,27 @@ class SermondistributorViewHelp_document extends JViewLegacy $isNew = $this->item->id == 0; JToolbarHelper::title( JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_NEW' : 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_EDIT'), 'pencil-2 article-add'); - // [Interpretation 9616] Built the actions for new and existing records. + // [Interpretation 9829] Built the actions for new and existing records. if ($this->refid || $this->ref) { if ($this->canDo->get('help_document.create') && $isNew) { - // [Interpretation 9628] We can create the record. + // [Interpretation 9841] We can create the record. JToolBarHelper::save('help_document.save', 'JTOOLBAR_SAVE'); } elseif ($this->canDo->get('help_document.edit')) { - // [Interpretation 9640] We can save the record. + // [Interpretation 9853] We can save the record. JToolBarHelper::save('help_document.save', 'JTOOLBAR_SAVE'); } if ($isNew) { - // [Interpretation 9645] Do not creat but cancel. + // [Interpretation 9858] Do not creat but cancel. JToolBarHelper::cancel('help_document.cancel', 'JTOOLBAR_CANCEL'); } else { - // [Interpretation 9650] We can close it. + // [Interpretation 9863] We can close it. JToolBarHelper::cancel('help_document.cancel', 'JTOOLBAR_CLOSE'); } } @@ -120,7 +120,7 @@ class SermondistributorViewHelp_document extends JViewLegacy { if ($isNew) { - // [Interpretation 9658] For new records, check the create permission. + // [Interpretation 9871] For new records, check the create permission. if ($this->canDo->get('help_document.create')) { JToolBarHelper::apply('help_document.apply', 'JTOOLBAR_APPLY'); @@ -133,11 +133,11 @@ class SermondistributorViewHelp_document extends JViewLegacy { if ($this->canDo->get('help_document.edit')) { - // [Interpretation 9685] We can save the new record + // [Interpretation 9898] We can save the new record JToolBarHelper::apply('help_document.apply', 'JTOOLBAR_APPLY'); JToolBarHelper::save('help_document.save', 'JTOOLBAR_SAVE'); - // [Interpretation 9688] We can save this record, but check the create permission to see - // [Interpretation 9689] if we can return to make a new one. + // [Interpretation 9901] We can save this record, but check the create permission to see + // [Interpretation 9902] if we can return to make a new one. if ($this->canDo->get('help_document.create')) { JToolBarHelper::custom('help_document.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); @@ -156,7 +156,7 @@ class SermondistributorViewHelp_document extends JViewLegacy } } JToolbarHelper::divider(); - // [Interpretation 9725] set help url for this view if found + // [Interpretation 9938] set help url for this view if found $help_url = SermondistributorHelper::getHelpUrl('help_document'); if (SermondistributorHelper::checkString($help_url)) { @@ -194,7 +194,7 @@ class SermondistributorViewHelp_document extends JViewLegacy $document->setTitle(JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_NEW' : 'COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_EDIT')); $document->addStyleSheet(JURI::root() . "administrator/components/com_sermondistributor/assets/css/help_document.css"); $document->addScript(JURI::root() . $this->script); - $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/help_document/submitbutton.js"); + $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/help_document/submitbutton.js"); JText::script('view not acceptable. Error'); } } diff --git a/admin/views/help_documents/tmpl/default.php b/admin/views/help_documents/tmpl/default.php index 74faf6f1..eaac6b19 100644 --- a/admin/views/help_documents/tmpl/default.php +++ b/admin/views/help_documents/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php diff --git a/admin/views/help_documents/tmpl/default_batch_body.php b/admin/views/help_documents/tmpl/default_batch_body.php index 00428f7c..c0067ab4 100644 --- a/admin/views/help_documents/tmpl/default_batch_body.php +++ b/admin/views/help_documents/tmpl/default_batch_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_body.php diff --git a/admin/views/help_documents/tmpl/default_batch_footer.php b/admin/views/help_documents/tmpl/default_batch_footer.php index dec5fe2d..49f6d04c 100644 --- a/admin/views/help_documents/tmpl/default_batch_footer.php +++ b/admin/views/help_documents/tmpl/default_batch_footer.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_footer.php diff --git a/admin/views/help_documents/tmpl/default_body.php b/admin/views/help_documents/tmpl/default_body.php index 08bfbc6e..1bef31e3 100644 --- a/admin/views/help_documents/tmpl/default_body.php +++ b/admin/views/help_documents/tmpl/default_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_body.php diff --git a/admin/views/help_documents/tmpl/default_foot.php b/admin/views/help_documents/tmpl/default_foot.php index 3c7e620a..d248bb9b 100644 --- a/admin/views/help_documents/tmpl/default_foot.php +++ b/admin/views/help_documents/tmpl/default_foot.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_foot.php diff --git a/admin/views/help_documents/tmpl/default_head.php b/admin/views/help_documents/tmpl/default_head.php index 4ba4bff5..2691d32a 100644 --- a/admin/views/help_documents/tmpl/default_head.php +++ b/admin/views/help_documents/tmpl/default_head.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_head.php diff --git a/admin/views/help_documents/tmpl/default_toolbar.php b/admin/views/help_documents/tmpl/default_toolbar.php index 4c1cda37..ce72093c 100644 --- a/admin/views/help_documents/tmpl/default_toolbar.php +++ b/admin/views/help_documents/tmpl/default_toolbar.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_toolbar.php diff --git a/admin/views/help_documents/view.html.php b/admin/views/help_documents/view.html.php index 582fa2cb..1a5459e7 100644 --- a/admin/views/help_documents/view.html.php +++ b/admin/views/help_documents/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -202,11 +202,11 @@ class SermondistributorViewHelp_documents extends JViewLegacy ); } - // [Interpretation 8464] Set Type Selection + // [Interpretation 8677] Set Type Selection $this->typeOptions = $this->getTheTypeSelections(); if ($this->typeOptions) { - // [Interpretation 8468] Type Filter + // [Interpretation 8681] Type Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_TYPE_LABEL').' -', 'filter_type', @@ -215,7 +215,7 @@ class SermondistributorViewHelp_documents extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8477] Type Batch Selection + // [Interpretation 8690] Type Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_TYPE_LABEL').' -', 'batch[type]', @@ -224,11 +224,11 @@ class SermondistributorViewHelp_documents extends JViewLegacy } } - // [Interpretation 8464] Set Location Selection + // [Interpretation 8677] Set Location Selection $this->locationOptions = $this->getTheLocationSelections(); if ($this->locationOptions) { - // [Interpretation 8468] Location Filter + // [Interpretation 8681] Location Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_LOCATION_LABEL').' -', 'filter_location', @@ -237,7 +237,7 @@ class SermondistributorViewHelp_documents extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8477] Location Batch Selection + // [Interpretation 8690] Location Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_LOCATION_LABEL').' -', 'batch[location]', @@ -246,11 +246,11 @@ class SermondistributorViewHelp_documents extends JViewLegacy } } - // [Interpretation 8464] Set Admin View Selection + // [Interpretation 8677] Set Admin View Selection $this->admin_viewOptions = $this->getTheAdmin_viewSelections(); if ($this->admin_viewOptions) { - // [Interpretation 8468] Admin View Filter + // [Interpretation 8681] Admin View Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ADMIN_VIEW_LABEL').' -', 'filter_admin_view', @@ -259,7 +259,7 @@ class SermondistributorViewHelp_documents extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8477] Admin View Batch Selection + // [Interpretation 8690] Admin View Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_ADMIN_VIEW_LABEL').' -', 'batch[admin_view]', @@ -268,11 +268,11 @@ class SermondistributorViewHelp_documents extends JViewLegacy } } - // [Interpretation 8464] Set Site View Selection + // [Interpretation 8677] Set Site View Selection $this->site_viewOptions = $this->getTheSite_viewSelections(); if ($this->site_viewOptions) { - // [Interpretation 8468] Site View Filter + // [Interpretation 8681] Site View Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_SITE_VIEW_LABEL').' -', 'filter_site_view', @@ -281,7 +281,7 @@ class SermondistributorViewHelp_documents extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8477] Site View Batch Selection + // [Interpretation 8690] Site View Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_HELP_DOCUMENT_SITE_VIEW_LABEL').' -', 'batch[site_view]', @@ -342,33 +342,33 @@ class SermondistributorViewHelp_documents extends JViewLegacy protected function getTheTypeSelections() { - // [Interpretation 8340] Get a db connection. + // [Interpretation 8553] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 8342] Create a new query object. + // [Interpretation 8555] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 8344] Select the text. + // [Interpretation 8557] Select the text. $query->select($db->quoteName('type')); $query->from($db->quoteName('#__sermondistributor_help_document')); $query->order($db->quoteName('type') . ' ASC'); - // [Interpretation 8348] Reset the query using our newly populated query object. + // [Interpretation 8561] Reset the query using our newly populated query object. $db->setQuery($query); $results = $db->loadColumn(); if ($results) { - // [Interpretation 8356] get model + // [Interpretation 8569] get model $model = $this->getModel(); $results = array_unique($results); $filter = array(); foreach ($results as $type) { - // [Interpretation 8367] Translate the type selection + // [Interpretation 8580] Translate the type selection $text = $model->selectionTranslation($type,'type'); - // [Interpretation 8369] Now add the type and its text to the options array + // [Interpretation 8582] Now add the type and its text to the options array $filter[] = JHtml::_('select.option', $type, JText::_($text)); } return $filter; @@ -378,33 +378,33 @@ class SermondistributorViewHelp_documents extends JViewLegacy protected function getTheLocationSelections() { - // [Interpretation 8340] Get a db connection. + // [Interpretation 8553] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 8342] Create a new query object. + // [Interpretation 8555] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 8344] Select the text. + // [Interpretation 8557] Select the text. $query->select($db->quoteName('location')); $query->from($db->quoteName('#__sermondistributor_help_document')); $query->order($db->quoteName('location') . ' ASC'); - // [Interpretation 8348] Reset the query using our newly populated query object. + // [Interpretation 8561] Reset the query using our newly populated query object. $db->setQuery($query); $results = $db->loadColumn(); if ($results) { - // [Interpretation 8356] get model + // [Interpretation 8569] get model $model = $this->getModel(); $results = array_unique($results); $filter = array(); foreach ($results as $location) { - // [Interpretation 8367] Translate the location selection + // [Interpretation 8580] Translate the location selection $text = $model->selectionTranslation($location,'location'); - // [Interpretation 8369] Now add the location and its text to the options array + // [Interpretation 8582] Now add the location and its text to the options array $filter[] = JHtml::_('select.option', $location, JText::_($text)); } return $filter; @@ -414,18 +414,18 @@ class SermondistributorViewHelp_documents extends JViewLegacy protected function getTheAdmin_viewSelections() { - // [Interpretation 8340] Get a db connection. + // [Interpretation 8553] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 8342] Create a new query object. + // [Interpretation 8555] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 8344] Select the text. + // [Interpretation 8557] Select the text. $query->select($db->quoteName('admin_view')); $query->from($db->quoteName('#__sermondistributor_help_document')); $query->order($db->quoteName('admin_view') . ' ASC'); - // [Interpretation 8348] Reset the query using our newly populated query object. + // [Interpretation 8561] Reset the query using our newly populated query object. $db->setQuery($query); $results = $db->loadColumn(); @@ -436,7 +436,7 @@ class SermondistributorViewHelp_documents extends JViewLegacy $filter = array(); foreach ($results as $admin_view) { - // [Interpretation 8374] Now add the admin_view and its text to the options array + // [Interpretation 8587] Now add the admin_view and its text to the options array $filter[] = JHtml::_('select.option', $admin_view, $admin_view); } return $filter; @@ -446,18 +446,18 @@ class SermondistributorViewHelp_documents extends JViewLegacy protected function getTheSite_viewSelections() { - // [Interpretation 8340] Get a db connection. + // [Interpretation 8553] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 8342] Create a new query object. + // [Interpretation 8555] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 8344] Select the text. + // [Interpretation 8557] Select the text. $query->select($db->quoteName('site_view')); $query->from($db->quoteName('#__sermondistributor_help_document')); $query->order($db->quoteName('site_view') . ' ASC'); - // [Interpretation 8348] Reset the query using our newly populated query object. + // [Interpretation 8561] Reset the query using our newly populated query object. $db->setQuery($query); $results = $db->loadColumn(); @@ -468,7 +468,7 @@ class SermondistributorViewHelp_documents extends JViewLegacy $filter = array(); foreach ($results as $site_view) { - // [Interpretation 8374] Now add the site_view and its text to the options array + // [Interpretation 8587] Now add the site_view and its text to the options array $filter[] = JHtml::_('select.option', $site_view, $site_view); } return $filter; diff --git a/admin/views/import/tmpl/default.php b/admin/views/import/tmpl/default.php index 1bb54ff4..1f61ad15 100644 --- a/admin/views/import/tmpl/default.php +++ b/admin/views/import/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php @@ -31,8 +31,7 @@ JHtml::_('bootstrap.tooltip'); JHtml::_('script', 'system/core.js', false, true); ?> @@ -145,89 +144,87 @@ JHtml::_('script', 'system/core.js', false, true);
- - hasPackage && SermondistributorHelper::checkArray($this->headerList) && SermondistributorHelper::checkArray($this->headers)) : ?> -
- -
- -
- -
-
- headerList as $name => $title): ?> -
- -
- -
-
- -
- -
-
- - + + hasPackage && SermondistributorHelper::checkArray($this->headerList) && SermondistributorHelper::checkArray($this->headers)) : ?> +
+ +
+ +
+ +
+
+ headerList as $name => $title): ?> +
+ +
+ +
+
+ +
+ +
+
+ + 'upload')); ?> - - -
- -
- -
- -
-
-
-     (.csv .xls .ods) -
-
- - - -
- -
- -
- -
-
-
-     (.csv .xls .ods) -
-
- - - -
- -
- -
- -
-
-
-     (.csv .xls .ods) -
-
- - - - + + +
+ +
+ +
+ +
+
+
+     (.csv .xls .ods) +
+
+ + + +
+ +
+ +
+ +
+
+
+     (.csv .xls .ods) +
+
+ + + +
+ +
+ +
+ +
+
+
+     (.csv .xls .ods) +
+
+ + - - - + + + -
+ \ No newline at end of file diff --git a/admin/views/import/view.html.php b/admin/views/import/view.html.php index 91aab408..c02f2901 100644 --- a/admin/views/import/view.html.php +++ b/admin/views/import/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php diff --git a/admin/views/preacher/submitbutton.js b/admin/views/preacher/submitbutton.js index c283857c..9d93b723 100644 --- a/admin/views/preacher/submitbutton.js +++ b/admin/views/preacher/submitbutton.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage submitbutton.js diff --git a/admin/views/preacher/tmpl/edit.php b/admin/views/preacher/tmpl/edit.php index d2cfc497..d42b9803 100644 --- a/admin/views/preacher/tmpl/edit.php +++ b/admin/views/preacher/tmpl/edit.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage edit.php diff --git a/admin/views/preacher/view.html.php b/admin/views/preacher/view.html.php index 025f62d1..5d05b58f 100644 --- a/admin/views/preacher/view.html.php +++ b/admin/views/preacher/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -70,7 +70,7 @@ class SermondistributorViewPreacher extends JViewLegacy $this->referral = '&ref='.(string)$this->ref; } - // [Interpretation 5819] Get Linked view data + // [Interpretation 5911] Get Linked view data $this->vvvsermons = $this->get('Vvvsermons'); // Set the toolbar @@ -95,27 +95,27 @@ class SermondistributorViewPreacher extends JViewLegacy $isNew = $this->item->id == 0; JToolbarHelper::title( JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_PREACHER_NEW' : 'COM_SERMONDISTRIBUTOR_PREACHER_EDIT'), 'pencil-2 article-add'); - // [Interpretation 9616] Built the actions for new and existing records. + // [Interpretation 9829] Built the actions for new and existing records. if ($this->refid || $this->ref) { if ($this->canDo->get('preacher.create') && $isNew) { - // [Interpretation 9628] We can create the record. + // [Interpretation 9841] We can create the record. JToolBarHelper::save('preacher.save', 'JTOOLBAR_SAVE'); } elseif ($this->canDo->get('preacher.edit')) { - // [Interpretation 9640] We can save the record. + // [Interpretation 9853] We can save the record. JToolBarHelper::save('preacher.save', 'JTOOLBAR_SAVE'); } if ($isNew) { - // [Interpretation 9645] Do not creat but cancel. + // [Interpretation 9858] Do not creat but cancel. JToolBarHelper::cancel('preacher.cancel', 'JTOOLBAR_CANCEL'); } else { - // [Interpretation 9650] We can close it. + // [Interpretation 9863] We can close it. JToolBarHelper::cancel('preacher.cancel', 'JTOOLBAR_CLOSE'); } } @@ -123,7 +123,7 @@ class SermondistributorViewPreacher extends JViewLegacy { if ($isNew) { - // [Interpretation 9658] For new records, check the create permission. + // [Interpretation 9871] For new records, check the create permission. if ($this->canDo->get('preacher.create')) { JToolBarHelper::apply('preacher.apply', 'JTOOLBAR_APPLY'); @@ -136,11 +136,11 @@ class SermondistributorViewPreacher extends JViewLegacy { if ($this->canDo->get('preacher.edit')) { - // [Interpretation 9685] We can save the new record + // [Interpretation 9898] We can save the new record JToolBarHelper::apply('preacher.apply', 'JTOOLBAR_APPLY'); JToolBarHelper::save('preacher.save', 'JTOOLBAR_SAVE'); - // [Interpretation 9688] We can save this record, but check the create permission to see - // [Interpretation 9689] if we can return to make a new one. + // [Interpretation 9901] We can save this record, but check the create permission to see + // [Interpretation 9902] if we can return to make a new one. if ($this->canDo->get('preacher.create')) { JToolBarHelper::custom('preacher.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); @@ -159,7 +159,7 @@ class SermondistributorViewPreacher extends JViewLegacy } } JToolbarHelper::divider(); - // [Interpretation 9725] set help url for this view if found + // [Interpretation 9938] set help url for this view if found $help_url = SermondistributorHelper::getHelpUrl('preacher'); if (SermondistributorHelper::checkString($help_url)) { @@ -197,21 +197,21 @@ class SermondistributorViewPreacher extends JViewLegacy $document->setTitle(JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_PREACHER_NEW' : 'COM_SERMONDISTRIBUTOR_PREACHER_EDIT')); $document->addStyleSheet(JURI::root() . "administrator/components/com_sermondistributor/assets/css/preacher.css"); - // [Interpretation 5861] Add the CSS for Footable. + // [Interpretation 5953] Add the CSS for Footable. $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.core.min.css'); - // [Interpretation 5863] Use the Metro Style + // [Interpretation 5955] Use the Metro Style if (!isset($this->fooTableStyle) || 0 == $this->fooTableStyle) { $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.metro.min.css'); } - // [Interpretation 5868] Use the Legacy Style. + // [Interpretation 5960] Use the Legacy Style. elseif (isset($this->fooTableStyle) && 1 == $this->fooTableStyle) { $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.standalone.min.css'); } - // [Interpretation 5873] Add the JavaScript for Footable + // [Interpretation 5965] Add the JavaScript for Footable $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.js'); $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.sort.js'); $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.filter.js'); @@ -221,7 +221,7 @@ class SermondistributorViewPreacher extends JViewLegacy $document->addScriptDeclaration($footable); $document->addScript(JURI::root() . $this->script); - $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/preacher/submitbutton.js"); + $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/preacher/submitbutton.js"); JText::script('view not acceptable. Error'); } } diff --git a/admin/views/preachers/tmpl/default.php b/admin/views/preachers/tmpl/default.php index aefb51df..a2e651d3 100644 --- a/admin/views/preachers/tmpl/default.php +++ b/admin/views/preachers/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php diff --git a/admin/views/preachers/tmpl/default_batch_body.php b/admin/views/preachers/tmpl/default_batch_body.php index 63d40c78..a18f5191 100644 --- a/admin/views/preachers/tmpl/default_batch_body.php +++ b/admin/views/preachers/tmpl/default_batch_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_body.php diff --git a/admin/views/preachers/tmpl/default_batch_footer.php b/admin/views/preachers/tmpl/default_batch_footer.php index 343a52e1..24eea074 100644 --- a/admin/views/preachers/tmpl/default_batch_footer.php +++ b/admin/views/preachers/tmpl/default_batch_footer.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_footer.php diff --git a/admin/views/preachers/tmpl/default_body.php b/admin/views/preachers/tmpl/default_body.php index d7a58c9a..46a47652 100644 --- a/admin/views/preachers/tmpl/default_body.php +++ b/admin/views/preachers/tmpl/default_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_body.php diff --git a/admin/views/preachers/tmpl/default_foot.php b/admin/views/preachers/tmpl/default_foot.php index 0f0caaba..0b4a5a86 100644 --- a/admin/views/preachers/tmpl/default_foot.php +++ b/admin/views/preachers/tmpl/default_foot.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_foot.php diff --git a/admin/views/preachers/tmpl/default_head.php b/admin/views/preachers/tmpl/default_head.php index 69d639a2..fa22e970 100644 --- a/admin/views/preachers/tmpl/default_head.php +++ b/admin/views/preachers/tmpl/default_head.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_head.php diff --git a/admin/views/preachers/tmpl/default_toolbar.php b/admin/views/preachers/tmpl/default_toolbar.php index e11b072e..6e2f197f 100644 --- a/admin/views/preachers/tmpl/default_toolbar.php +++ b/admin/views/preachers/tmpl/default_toolbar.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_toolbar.php diff --git a/admin/views/preachers/view.html.php b/admin/views/preachers/view.html.php index 3dc07604..09456689 100644 --- a/admin/views/preachers/view.html.php +++ b/admin/views/preachers/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php diff --git a/admin/views/series/submitbutton.js b/admin/views/series/submitbutton.js index 2568a7dd..38eadd55 100644 --- a/admin/views/series/submitbutton.js +++ b/admin/views/series/submitbutton.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage submitbutton.js diff --git a/admin/views/series/tmpl/edit.php b/admin/views/series/tmpl/edit.php index 4599e392..59b6d062 100644 --- a/admin/views/series/tmpl/edit.php +++ b/admin/views/series/tmpl/edit.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage edit.php diff --git a/admin/views/series/view.html.php b/admin/views/series/view.html.php index c5149fca..046bd2a5 100644 --- a/admin/views/series/view.html.php +++ b/admin/views/series/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -70,7 +70,7 @@ class SermondistributorViewSeries extends JViewLegacy $this->referral = '&ref='.(string)$this->ref; } - // [Interpretation 5819] Get Linked view data + // [Interpretation 5911] Get Linked view data $this->vwcsermons = $this->get('Vwcsermons'); // Set the toolbar @@ -95,27 +95,27 @@ class SermondistributorViewSeries extends JViewLegacy $isNew = $this->item->id == 0; JToolbarHelper::title( JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_SERIES_NEW' : 'COM_SERMONDISTRIBUTOR_SERIES_EDIT'), 'pencil-2 article-add'); - // [Interpretation 9616] Built the actions for new and existing records. + // [Interpretation 9829] Built the actions for new and existing records. if ($this->refid || $this->ref) { if ($this->canDo->get('series.create') && $isNew) { - // [Interpretation 9628] We can create the record. + // [Interpretation 9841] We can create the record. JToolBarHelper::save('series.save', 'JTOOLBAR_SAVE'); } elseif ($this->canDo->get('series.edit')) { - // [Interpretation 9640] We can save the record. + // [Interpretation 9853] We can save the record. JToolBarHelper::save('series.save', 'JTOOLBAR_SAVE'); } if ($isNew) { - // [Interpretation 9645] Do not creat but cancel. + // [Interpretation 9858] Do not creat but cancel. JToolBarHelper::cancel('series.cancel', 'JTOOLBAR_CANCEL'); } else { - // [Interpretation 9650] We can close it. + // [Interpretation 9863] We can close it. JToolBarHelper::cancel('series.cancel', 'JTOOLBAR_CLOSE'); } } @@ -123,7 +123,7 @@ class SermondistributorViewSeries extends JViewLegacy { if ($isNew) { - // [Interpretation 9658] For new records, check the create permission. + // [Interpretation 9871] For new records, check the create permission. if ($this->canDo->get('series.create')) { JToolBarHelper::apply('series.apply', 'JTOOLBAR_APPLY'); @@ -136,11 +136,11 @@ class SermondistributorViewSeries extends JViewLegacy { if ($this->canDo->get('series.edit')) { - // [Interpretation 9685] We can save the new record + // [Interpretation 9898] We can save the new record JToolBarHelper::apply('series.apply', 'JTOOLBAR_APPLY'); JToolBarHelper::save('series.save', 'JTOOLBAR_SAVE'); - // [Interpretation 9688] We can save this record, but check the create permission to see - // [Interpretation 9689] if we can return to make a new one. + // [Interpretation 9901] We can save this record, but check the create permission to see + // [Interpretation 9902] if we can return to make a new one. if ($this->canDo->get('series.create')) { JToolBarHelper::custom('series.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); @@ -159,7 +159,7 @@ class SermondistributorViewSeries extends JViewLegacy } } JToolbarHelper::divider(); - // [Interpretation 9725] set help url for this view if found + // [Interpretation 9938] set help url for this view if found $help_url = SermondistributorHelper::getHelpUrl('series'); if (SermondistributorHelper::checkString($help_url)) { @@ -197,21 +197,21 @@ class SermondistributorViewSeries extends JViewLegacy $document->setTitle(JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_SERIES_NEW' : 'COM_SERMONDISTRIBUTOR_SERIES_EDIT')); $document->addStyleSheet(JURI::root() . "administrator/components/com_sermondistributor/assets/css/series.css"); - // [Interpretation 5861] Add the CSS for Footable. + // [Interpretation 5953] Add the CSS for Footable. $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.core.min.css'); - // [Interpretation 5863] Use the Metro Style + // [Interpretation 5955] Use the Metro Style if (!isset($this->fooTableStyle) || 0 == $this->fooTableStyle) { $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.metro.min.css'); } - // [Interpretation 5868] Use the Legacy Style. + // [Interpretation 5960] Use the Legacy Style. elseif (isset($this->fooTableStyle) && 1 == $this->fooTableStyle) { $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.standalone.min.css'); } - // [Interpretation 5873] Add the JavaScript for Footable + // [Interpretation 5965] Add the JavaScript for Footable $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.js'); $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.sort.js'); $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.filter.js'); @@ -221,7 +221,7 @@ class SermondistributorViewSeries extends JViewLegacy $document->addScriptDeclaration($footable); $document->addScript(JURI::root() . $this->script); - $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/series/submitbutton.js"); + $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/series/submitbutton.js"); JText::script('view not acceptable. Error'); } } diff --git a/admin/views/series_list/tmpl/default.php b/admin/views/series_list/tmpl/default.php index 278bb6a8..8d18712c 100644 --- a/admin/views/series_list/tmpl/default.php +++ b/admin/views/series_list/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php diff --git a/admin/views/series_list/tmpl/default_batch_body.php b/admin/views/series_list/tmpl/default_batch_body.php index fbbc3c5f..bf9d7ab3 100644 --- a/admin/views/series_list/tmpl/default_batch_body.php +++ b/admin/views/series_list/tmpl/default_batch_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_body.php diff --git a/admin/views/series_list/tmpl/default_batch_footer.php b/admin/views/series_list/tmpl/default_batch_footer.php index bf6882f7..d72ad3a4 100644 --- a/admin/views/series_list/tmpl/default_batch_footer.php +++ b/admin/views/series_list/tmpl/default_batch_footer.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_footer.php diff --git a/admin/views/series_list/tmpl/default_body.php b/admin/views/series_list/tmpl/default_body.php index 47192ded..12ef5bf2 100644 --- a/admin/views/series_list/tmpl/default_body.php +++ b/admin/views/series_list/tmpl/default_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_body.php diff --git a/admin/views/series_list/tmpl/default_foot.php b/admin/views/series_list/tmpl/default_foot.php index 0f0caaba..0b4a5a86 100644 --- a/admin/views/series_list/tmpl/default_foot.php +++ b/admin/views/series_list/tmpl/default_foot.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_foot.php diff --git a/admin/views/series_list/tmpl/default_head.php b/admin/views/series_list/tmpl/default_head.php index e2c6a874..6a69cded 100644 --- a/admin/views/series_list/tmpl/default_head.php +++ b/admin/views/series_list/tmpl/default_head.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_head.php diff --git a/admin/views/series_list/tmpl/default_toolbar.php b/admin/views/series_list/tmpl/default_toolbar.php index fa8d1ec7..fc3b4763 100644 --- a/admin/views/series_list/tmpl/default_toolbar.php +++ b/admin/views/series_list/tmpl/default_toolbar.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_toolbar.php diff --git a/admin/views/series_list/view.html.php b/admin/views/series_list/view.html.php index c6d1622c..c59a73ef 100644 --- a/admin/views/series_list/view.html.php +++ b/admin/views/series_list/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php diff --git a/admin/views/sermon/submitbutton.js b/admin/views/sermon/submitbutton.js index 7041ab1c..66a79f3e 100644 --- a/admin/views/sermon/submitbutton.js +++ b/admin/views/sermon/submitbutton.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage submitbutton.js diff --git a/admin/views/sermon/tmpl/edit.php b/admin/views/sermon/tmpl/edit.php index 909cce00..3d8c4315 100644 --- a/admin/views/sermon/tmpl/edit.php +++ b/admin/views/sermon/tmpl/edit.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage edit.php diff --git a/admin/views/sermon/view.html.php b/admin/views/sermon/view.html.php index 092f0b74..e34bb1d7 100644 --- a/admin/views/sermon/view.html.php +++ b/admin/views/sermon/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -70,7 +70,7 @@ class SermondistributorViewSermon extends JViewLegacy $this->referral = '&ref='.(string)$this->ref; } - // [Interpretation 5819] Get Linked view data + // [Interpretation 5911] Get Linked view data $this->vwbstastics = $this->get('Vwbstastics'); // Set the toolbar @@ -95,27 +95,27 @@ class SermondistributorViewSermon extends JViewLegacy $isNew = $this->item->id == 0; JToolbarHelper::title( JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_SERMON_NEW' : 'COM_SERMONDISTRIBUTOR_SERMON_EDIT'), 'pencil-2 article-add'); - // [Interpretation 9616] Built the actions for new and existing records. + // [Interpretation 9829] Built the actions for new and existing records. if ($this->refid || $this->ref) { if ($this->canDo->get('sermon.create') && $isNew) { - // [Interpretation 9628] We can create the record. + // [Interpretation 9841] We can create the record. JToolBarHelper::save('sermon.save', 'JTOOLBAR_SAVE'); } elseif ($this->canDo->get('sermon.edit')) { - // [Interpretation 9640] We can save the record. + // [Interpretation 9853] We can save the record. JToolBarHelper::save('sermon.save', 'JTOOLBAR_SAVE'); } if ($isNew) { - // [Interpretation 9645] Do not creat but cancel. + // [Interpretation 9858] Do not creat but cancel. JToolBarHelper::cancel('sermon.cancel', 'JTOOLBAR_CANCEL'); } else { - // [Interpretation 9650] We can close it. + // [Interpretation 9863] We can close it. JToolBarHelper::cancel('sermon.cancel', 'JTOOLBAR_CLOSE'); } } @@ -123,7 +123,7 @@ class SermondistributorViewSermon extends JViewLegacy { if ($isNew) { - // [Interpretation 9658] For new records, check the create permission. + // [Interpretation 9871] For new records, check the create permission. if ($this->canDo->get('sermon.create')) { JToolBarHelper::apply('sermon.apply', 'JTOOLBAR_APPLY'); @@ -136,11 +136,11 @@ class SermondistributorViewSermon extends JViewLegacy { if ($this->canDo->get('sermon.edit')) { - // [Interpretation 9685] We can save the new record + // [Interpretation 9898] We can save the new record JToolBarHelper::apply('sermon.apply', 'JTOOLBAR_APPLY'); JToolBarHelper::save('sermon.save', 'JTOOLBAR_SAVE'); - // [Interpretation 9688] We can save this record, but check the create permission to see - // [Interpretation 9689] if we can return to make a new one. + // [Interpretation 9901] We can save this record, but check the create permission to see + // [Interpretation 9902] if we can return to make a new one. if ($this->canDo->get('sermon.create')) { JToolBarHelper::custom('sermon.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); @@ -159,7 +159,7 @@ class SermondistributorViewSermon extends JViewLegacy } } JToolbarHelper::divider(); - // [Interpretation 9725] set help url for this view if found + // [Interpretation 9938] set help url for this view if found $help_url = SermondistributorHelper::getHelpUrl('sermon'); if (SermondistributorHelper::checkString($help_url)) { @@ -197,21 +197,21 @@ class SermondistributorViewSermon extends JViewLegacy $document->setTitle(JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_SERMON_NEW' : 'COM_SERMONDISTRIBUTOR_SERMON_EDIT')); $document->addStyleSheet(JURI::root() . "administrator/components/com_sermondistributor/assets/css/sermon.css"); - // [Interpretation 5861] Add the CSS for Footable. + // [Interpretation 5953] Add the CSS for Footable. $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.core.min.css'); - // [Interpretation 5863] Use the Metro Style + // [Interpretation 5955] Use the Metro Style if (!isset($this->fooTableStyle) || 0 == $this->fooTableStyle) { $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.metro.min.css'); } - // [Interpretation 5868] Use the Legacy Style. + // [Interpretation 5960] Use the Legacy Style. elseif (isset($this->fooTableStyle) && 1 == $this->fooTableStyle) { $document->addStyleSheet(JURI::root() .'media/com_sermondistributor/footable/css/footable.standalone.min.css'); } - // [Interpretation 5873] Add the JavaScript for Footable + // [Interpretation 5965] Add the JavaScript for Footable $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.js'); $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.sort.js'); $document->addScript(JURI::root() .'media/com_sermondistributor/footable/js/footable.filter.js'); @@ -221,7 +221,7 @@ class SermondistributorViewSermon extends JViewLegacy $document->addScriptDeclaration($footable); $document->addScript(JURI::root() . $this->script); - $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/sermon/submitbutton.js"); + $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/sermon/submitbutton.js"); JText::script('view not acceptable. Error'); } } diff --git a/admin/views/sermondistributor/tmpl/default.php b/admin/views/sermondistributor/tmpl/default.php index dd96b9c6..0d28c429 100644 --- a/admin/views/sermondistributor/tmpl/default.php +++ b/admin/views/sermondistributor/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php diff --git a/admin/views/sermondistributor/tmpl/default_main.php b/admin/views/sermondistributor/tmpl/default_main.php index 725c8138..7b1a4f86 100644 --- a/admin/views/sermondistributor/tmpl/default_main.php +++ b/admin/views/sermondistributor/tmpl/default_main.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_main.php @@ -27,16 +27,18 @@ defined('_JEXEC') or die('Restricted access'); ?> -icons['main'])) :?> +icons['main']) && is_array($this->icons['main'])) :?> icons['main'] as $icon): ?> - - -
+ + +
+ +

\ No newline at end of file diff --git a/admin/views/sermondistributor/tmpl/default_vdm.php b/admin/views/sermondistributor/tmpl/default_vdm.php index 4b4d597b..4291eca8 100644 --- a/admin/views/sermondistributor/tmpl/default_vdm.php +++ b/admin/views/sermondistributor/tmpl/default_vdm.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_vdm.php diff --git a/admin/views/sermondistributor/view.html.php b/admin/views/sermondistributor/view.html.php index 581d2286..e3811874 100644 --- a/admin/views/sermondistributor/view.html.php +++ b/admin/views/sermondistributor/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php diff --git a/admin/views/sermons/tmpl/default.php b/admin/views/sermons/tmpl/default.php index f39e7ee1..9aa06458 100644 --- a/admin/views/sermons/tmpl/default.php +++ b/admin/views/sermons/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php diff --git a/admin/views/sermons/tmpl/default_batch_body.php b/admin/views/sermons/tmpl/default_batch_body.php index 89aa4a7e..421cb880 100644 --- a/admin/views/sermons/tmpl/default_batch_body.php +++ b/admin/views/sermons/tmpl/default_batch_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_body.php diff --git a/admin/views/sermons/tmpl/default_batch_footer.php b/admin/views/sermons/tmpl/default_batch_footer.php index 7cd44c94..9f2a1ec3 100644 --- a/admin/views/sermons/tmpl/default_batch_footer.php +++ b/admin/views/sermons/tmpl/default_batch_footer.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_footer.php diff --git a/admin/views/sermons/tmpl/default_body.php b/admin/views/sermons/tmpl/default_body.php index e03d466e..0570060e 100644 --- a/admin/views/sermons/tmpl/default_body.php +++ b/admin/views/sermons/tmpl/default_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_body.php diff --git a/admin/views/sermons/tmpl/default_foot.php b/admin/views/sermons/tmpl/default_foot.php index 9c168e4d..de548a4d 100644 --- a/admin/views/sermons/tmpl/default_foot.php +++ b/admin/views/sermons/tmpl/default_foot.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_foot.php diff --git a/admin/views/sermons/tmpl/default_head.php b/admin/views/sermons/tmpl/default_head.php index 3deabf00..d6f5e8c3 100644 --- a/admin/views/sermons/tmpl/default_head.php +++ b/admin/views/sermons/tmpl/default_head.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_head.php diff --git a/admin/views/sermons/tmpl/default_toolbar.php b/admin/views/sermons/tmpl/default_toolbar.php index 09310908..d17f8237 100644 --- a/admin/views/sermons/tmpl/default_toolbar.php +++ b/admin/views/sermons/tmpl/default_toolbar.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_toolbar.php diff --git a/admin/views/sermons/view.html.php b/admin/views/sermons/view.html.php index 58b0267b..fa157ddd 100644 --- a/admin/views/sermons/view.html.php +++ b/admin/views/sermons/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -202,7 +202,7 @@ class SermondistributorViewSermons extends JViewLegacy ); } - // [Interpretation 8515] Category Filter. + // [Interpretation 8728] Category Filter. JHtmlSidebar::addFilter( JText::_('JOPTION_SELECT_CATEGORY'), 'filter_category_id', @@ -211,7 +211,7 @@ class SermondistributorViewSermons extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8525] Category Batch selection. + // [Interpretation 8738] Category Batch selection. JHtmlBatch_::addListSelection( JText::_('COM_SERMONDISTRIBUTOR_KEEP_ORIGINAL_CATEGORY'), 'batch[category]', @@ -219,11 +219,11 @@ class SermondistributorViewSermons extends JViewLegacy ); } - // [Interpretation 8430] Set Preacher Name Selection + // [Interpretation 8643] Set Preacher Name Selection $this->preacherNameOptions = JFormHelper::loadFieldType('Preachers')->getOptions(); if ($this->preacherNameOptions) { - // [Interpretation 8434] Preacher Name Filter + // [Interpretation 8647] Preacher Name Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_PREACHER_LABEL').' -', 'filter_preacher', @@ -232,7 +232,7 @@ class SermondistributorViewSermons extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8443] Preacher Name Batch Selection + // [Interpretation 8656] Preacher Name Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_PREACHER_LABEL').' -', 'batch[preacher]', @@ -241,11 +241,11 @@ class SermondistributorViewSermons extends JViewLegacy } } - // [Interpretation 8430] Set Series Name Selection + // [Interpretation 8643] Set Series Name Selection $this->seriesNameOptions = JFormHelper::loadFieldType('Series')->getOptions(); if ($this->seriesNameOptions) { - // [Interpretation 8434] Series Name Filter + // [Interpretation 8647] Series Name Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_SERIES_LABEL').' -', 'filter_series', @@ -254,7 +254,7 @@ class SermondistributorViewSermons extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8443] Series Name Batch Selection + // [Interpretation 8656] Series Name Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_SERIES_LABEL').' -', 'batch[series]', @@ -263,11 +263,11 @@ class SermondistributorViewSermons extends JViewLegacy } } - // [Interpretation 8464] Set Link Type Selection + // [Interpretation 8677] Set Link Type Selection $this->link_typeOptions = $this->getTheLink_typeSelections(); if ($this->link_typeOptions) { - // [Interpretation 8468] Link Type Filter + // [Interpretation 8681] Link Type Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_LINK_TYPE_LABEL').' -', 'filter_link_type', @@ -276,7 +276,7 @@ class SermondistributorViewSermons extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8477] Link Type Batch Selection + // [Interpretation 8690] Link Type Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_LINK_TYPE_LABEL').' -', 'batch[link_type]', @@ -285,11 +285,11 @@ class SermondistributorViewSermons extends JViewLegacy } } - // [Interpretation 8464] Set Source Selection + // [Interpretation 8677] Set Source Selection $this->sourceOptions = $this->getTheSourceSelections(); if ($this->sourceOptions) { - // [Interpretation 8468] Source Filter + // [Interpretation 8681] Source Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_SOURCE_LABEL').' -', 'filter_source', @@ -298,7 +298,7 @@ class SermondistributorViewSermons extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8477] Source Batch Selection + // [Interpretation 8690] Source Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_SERMON_SOURCE_LABEL').' -', 'batch[source]', @@ -361,33 +361,33 @@ class SermondistributorViewSermons extends JViewLegacy protected function getTheLink_typeSelections() { - // [Interpretation 8340] Get a db connection. + // [Interpretation 8553] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 8342] Create a new query object. + // [Interpretation 8555] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 8344] Select the text. + // [Interpretation 8557] Select the text. $query->select($db->quoteName('link_type')); $query->from($db->quoteName('#__sermondistributor_sermon')); $query->order($db->quoteName('link_type') . ' ASC'); - // [Interpretation 8348] Reset the query using our newly populated query object. + // [Interpretation 8561] Reset the query using our newly populated query object. $db->setQuery($query); $results = $db->loadColumn(); if ($results) { - // [Interpretation 8356] get model + // [Interpretation 8569] get model $model = $this->getModel(); $results = array_unique($results); $filter = array(); foreach ($results as $link_type) { - // [Interpretation 8367] Translate the link_type selection + // [Interpretation 8580] Translate the link_type selection $text = $model->selectionTranslation($link_type,'link_type'); - // [Interpretation 8369] Now add the link_type and its text to the options array + // [Interpretation 8582] Now add the link_type and its text to the options array $filter[] = JHtml::_('select.option', $link_type, JText::_($text)); } return $filter; @@ -397,33 +397,33 @@ class SermondistributorViewSermons extends JViewLegacy protected function getTheSourceSelections() { - // [Interpretation 8340] Get a db connection. + // [Interpretation 8553] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 8342] Create a new query object. + // [Interpretation 8555] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 8344] Select the text. + // [Interpretation 8557] Select the text. $query->select($db->quoteName('source')); $query->from($db->quoteName('#__sermondistributor_sermon')); $query->order($db->quoteName('source') . ' ASC'); - // [Interpretation 8348] Reset the query using our newly populated query object. + // [Interpretation 8561] Reset the query using our newly populated query object. $db->setQuery($query); $results = $db->loadColumn(); if ($results) { - // [Interpretation 8356] get model + // [Interpretation 8569] get model $model = $this->getModel(); $results = array_unique($results); $filter = array(); foreach ($results as $source) { - // [Interpretation 8367] Translate the source selection + // [Interpretation 8580] Translate the source selection $text = $model->selectionTranslation($source,'source'); - // [Interpretation 8369] Now add the source and its text to the options array + // [Interpretation 8582] Now add the source and its text to the options array $filter[] = JHtml::_('select.option', $source, JText::_($text)); } return $filter; diff --git a/admin/views/statistic/submitbutton.js b/admin/views/statistic/submitbutton.js index b12f37ba..9516789b 100644 --- a/admin/views/statistic/submitbutton.js +++ b/admin/views/statistic/submitbutton.js @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage submitbutton.js diff --git a/admin/views/statistic/tmpl/edit.php b/admin/views/statistic/tmpl/edit.php index c861ce41..f998c899 100644 --- a/admin/views/statistic/tmpl/edit.php +++ b/admin/views/statistic/tmpl/edit.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage edit.php diff --git a/admin/views/statistic/view.html.php b/admin/views/statistic/view.html.php index 5951fa49..43314617 100644 --- a/admin/views/statistic/view.html.php +++ b/admin/views/statistic/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -92,27 +92,27 @@ class SermondistributorViewStatistic extends JViewLegacy $isNew = $this->item->id == 0; JToolbarHelper::title( JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_STATISTIC_NEW' : 'COM_SERMONDISTRIBUTOR_STATISTIC_EDIT'), 'pencil-2 article-add'); - // [Interpretation 9616] Built the actions for new and existing records. + // [Interpretation 9829] Built the actions for new and existing records. if ($this->refid || $this->ref) { if ($this->canDo->get('statistic.create') && $isNew) { - // [Interpretation 9628] We can create the record. + // [Interpretation 9841] We can create the record. JToolBarHelper::save('statistic.save', 'JTOOLBAR_SAVE'); } elseif ($this->canDo->get('statistic.edit')) { - // [Interpretation 9640] We can save the record. + // [Interpretation 9853] We can save the record. JToolBarHelper::save('statistic.save', 'JTOOLBAR_SAVE'); } if ($isNew) { - // [Interpretation 9645] Do not creat but cancel. + // [Interpretation 9858] Do not creat but cancel. JToolBarHelper::cancel('statistic.cancel', 'JTOOLBAR_CANCEL'); } else { - // [Interpretation 9650] We can close it. + // [Interpretation 9863] We can close it. JToolBarHelper::cancel('statistic.cancel', 'JTOOLBAR_CLOSE'); } } @@ -120,7 +120,7 @@ class SermondistributorViewStatistic extends JViewLegacy { if ($isNew) { - // [Interpretation 9658] For new records, check the create permission. + // [Interpretation 9871] For new records, check the create permission. if ($this->canDo->get('statistic.create')) { JToolBarHelper::apply('statistic.apply', 'JTOOLBAR_APPLY'); @@ -133,11 +133,11 @@ class SermondistributorViewStatistic extends JViewLegacy { if ($this->canDo->get('statistic.edit')) { - // [Interpretation 9685] We can save the new record + // [Interpretation 9898] We can save the new record JToolBarHelper::apply('statistic.apply', 'JTOOLBAR_APPLY'); JToolBarHelper::save('statistic.save', 'JTOOLBAR_SAVE'); - // [Interpretation 9688] We can save this record, but check the create permission to see - // [Interpretation 9689] if we can return to make a new one. + // [Interpretation 9901] We can save this record, but check the create permission to see + // [Interpretation 9902] if we can return to make a new one. if ($this->canDo->get('statistic.create')) { JToolBarHelper::custom('statistic.save2new', 'save-new.png', 'save-new_f2.png', 'JTOOLBAR_SAVE_AND_NEW', false); @@ -156,7 +156,7 @@ class SermondistributorViewStatistic extends JViewLegacy } } JToolbarHelper::divider(); - // [Interpretation 9725] set help url for this view if found + // [Interpretation 9938] set help url for this view if found $help_url = SermondistributorHelper::getHelpUrl('statistic'); if (SermondistributorHelper::checkString($help_url)) { @@ -194,7 +194,7 @@ class SermondistributorViewStatistic extends JViewLegacy $document->setTitle(JText::_($isNew ? 'COM_SERMONDISTRIBUTOR_STATISTIC_NEW' : 'COM_SERMONDISTRIBUTOR_STATISTIC_EDIT')); $document->addStyleSheet(JURI::root() . "administrator/components/com_sermondistributor/assets/css/statistic.css"); $document->addScript(JURI::root() . $this->script); - $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/statistic/submitbutton.js"); + $document->addScript(JURI::root() . "administrator/components/com_sermondistributor/views/statistic/submitbutton.js"); JText::script('view not acceptable. Error'); } } diff --git a/admin/views/statistics/tmpl/default.php b/admin/views/statistics/tmpl/default.php index 9bfe4506..dcecbd05 100644 --- a/admin/views/statistics/tmpl/default.php +++ b/admin/views/statistics/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php diff --git a/admin/views/statistics/tmpl/default_batch_body.php b/admin/views/statistics/tmpl/default_batch_body.php index 0f8de0f4..88002ead 100644 --- a/admin/views/statistics/tmpl/default_batch_body.php +++ b/admin/views/statistics/tmpl/default_batch_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_body.php diff --git a/admin/views/statistics/tmpl/default_batch_footer.php b/admin/views/statistics/tmpl/default_batch_footer.php index 9f729717..73e15f33 100644 --- a/admin/views/statistics/tmpl/default_batch_footer.php +++ b/admin/views/statistics/tmpl/default_batch_footer.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_batch_footer.php diff --git a/admin/views/statistics/tmpl/default_body.php b/admin/views/statistics/tmpl/default_body.php index 982b3055..23a7b518 100644 --- a/admin/views/statistics/tmpl/default_body.php +++ b/admin/views/statistics/tmpl/default_body.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_body.php diff --git a/admin/views/statistics/tmpl/default_foot.php b/admin/views/statistics/tmpl/default_foot.php index 41fdf6d2..ae0a2bdc 100644 --- a/admin/views/statistics/tmpl/default_foot.php +++ b/admin/views/statistics/tmpl/default_foot.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_foot.php diff --git a/admin/views/statistics/tmpl/default_head.php b/admin/views/statistics/tmpl/default_head.php index d393f19b..1be3de06 100644 --- a/admin/views/statistics/tmpl/default_head.php +++ b/admin/views/statistics/tmpl/default_head.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_head.php diff --git a/admin/views/statistics/tmpl/default_toolbar.php b/admin/views/statistics/tmpl/default_toolbar.php index 26a1427a..e2025f3d 100644 --- a/admin/views/statistics/tmpl/default_toolbar.php +++ b/admin/views/statistics/tmpl/default_toolbar.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_toolbar.php diff --git a/admin/views/statistics/view.html.php b/admin/views/statistics/view.html.php index 6ab7de5b..2c206712 100644 --- a/admin/views/statistics/view.html.php +++ b/admin/views/statistics/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -202,11 +202,11 @@ class SermondistributorViewStatistics extends JViewLegacy ); } - // [Interpretation 8430] Set Sermon Name Selection + // [Interpretation 8643] Set Sermon Name Selection $this->sermonNameOptions = JFormHelper::loadFieldType('Sermon')->getOptions(); if ($this->sermonNameOptions) { - // [Interpretation 8434] Sermon Name Filter + // [Interpretation 8647] Sermon Name Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_STATISTIC_SERMON_LABEL').' -', 'filter_sermon', @@ -215,7 +215,7 @@ class SermondistributorViewStatistics extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8443] Sermon Name Batch Selection + // [Interpretation 8656] Sermon Name Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_STATISTIC_SERMON_LABEL').' -', 'batch[sermon]', @@ -224,11 +224,11 @@ class SermondistributorViewStatistics extends JViewLegacy } } - // [Interpretation 8430] Set Preacher Name Selection + // [Interpretation 8643] Set Preacher Name Selection $this->preacherNameOptions = JFormHelper::loadFieldType('Preachers')->getOptions(); if ($this->preacherNameOptions) { - // [Interpretation 8434] Preacher Name Filter + // [Interpretation 8647] Preacher Name Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_STATISTIC_PREACHER_LABEL').' -', 'filter_preacher', @@ -237,7 +237,7 @@ class SermondistributorViewStatistics extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8443] Preacher Name Batch Selection + // [Interpretation 8656] Preacher Name Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_STATISTIC_PREACHER_LABEL').' -', 'batch[preacher]', @@ -246,11 +246,11 @@ class SermondistributorViewStatistics extends JViewLegacy } } - // [Interpretation 8430] Set Series Name Selection + // [Interpretation 8643] Set Series Name Selection $this->seriesNameOptions = JFormHelper::loadFieldType('Series')->getOptions(); if ($this->seriesNameOptions) { - // [Interpretation 8434] Series Name Filter + // [Interpretation 8647] Series Name Filter JHtmlSidebar::addFilter( '- Select '.JText::_('COM_SERMONDISTRIBUTOR_STATISTIC_SERIES_LABEL').' -', 'filter_series', @@ -259,7 +259,7 @@ class SermondistributorViewStatistics extends JViewLegacy if ($this->canBatch && $this->canCreate && $this->canEdit) { - // [Interpretation 8443] Series Name Batch Selection + // [Interpretation 8656] Series Name Batch Selection JHtmlBatch_::addListSelection( '- Keep Original '.JText::_('COM_SERMONDISTRIBUTOR_STATISTIC_SERIES_LABEL').' -', 'batch[series]', diff --git a/media/jplayer/add-on/jplayer.playlist.js b/media/jplayer/add-on/jplayer.playlist.js new file mode 100644 index 00000000..725caf06 --- /dev/null +++ b/media/jplayer/add-on/jplayer.playlist.js @@ -0,0 +1,496 @@ +/* + * Playlist Object for the jPlayer Plugin + * http://www.jplayer.org + * + * Copyright (c) 2009 - 2014 Happyworm Ltd + * Licensed under the MIT license. + * http://www.opensource.org/licenses/MIT + * + * Author: Mark J Panaghiston + * Version: 2.4.1 + * Date: 19th November 2014 + * + * Requires: + * - jQuery 1.7.0+ + * - jPlayer 2.8.2+ + */ + +/*global jPlayerPlaylist:true */ + +(function($, undefined) { + + jPlayerPlaylist = function(cssSelector, playlist, options) { + var self = this; + + this.current = 0; + this.loop = false; // Flag used with the jPlayer repeat event + this.shuffled = false; + this.removing = false; // Flag is true during remove animation, disabling the remove() method until complete. + + this.cssSelector = $.extend({}, this._cssSelector, cssSelector); // Object: Containing the css selectors for jPlayer and its cssSelectorAncestor + this.options = $.extend(true, { + keyBindings: { + next: { + key: 221, // ] + fn: function() { + self.next(); + } + }, + previous: { + key: 219, // [ + fn: function() { + self.previous(); + } + }, + shuffle: { + key: 83, // s + fn: function() { + self.shuffle(); + } + } + }, + stateClass: { + shuffled: "jp-state-shuffled" + } + }, this._options, options); // Object: The jPlayer constructor options for this playlist and the playlist options + + this.playlist = []; // Array of Objects: The current playlist displayed (Un-shuffled or Shuffled) + this.original = []; // Array of Objects: The original playlist + + this._initPlaylist(playlist); // Copies playlist to this.original. Then mirrors this.original to this.playlist. Creating two arrays, where the element pointers match. (Enables pointer comparison.) + + // Setup the css selectors for the extra interface items used by the playlist. + this.cssSelector.details = this.cssSelector.cssSelectorAncestor + " .jp-details"; // Note that jPlayer controls the text in the title element. + this.cssSelector.playlist = this.cssSelector.cssSelectorAncestor + " .jp-playlist"; + this.cssSelector.next = this.cssSelector.cssSelectorAncestor + " .jp-next"; + this.cssSelector.previous = this.cssSelector.cssSelectorAncestor + " .jp-previous"; + this.cssSelector.shuffle = this.cssSelector.cssSelectorAncestor + " .jp-shuffle"; + this.cssSelector.shuffleOff = this.cssSelector.cssSelectorAncestor + " .jp-shuffle-off"; + + // Override the cssSelectorAncestor given in options + this.options.cssSelectorAncestor = this.cssSelector.cssSelectorAncestor; + + // Override the default repeat event handler + this.options.repeat = function(event) { + self.loop = event.jPlayer.options.loop; + }; + + // Create a ready event handler to initialize the playlist + $(this.cssSelector.jPlayer).bind($.jPlayer.event.ready, function() { + self._init(); + }); + + // Create an ended event handler to move to the next item + $(this.cssSelector.jPlayer).bind($.jPlayer.event.ended, function() { + self.next(); + }); + + // Create a play event handler to pause other instances + $(this.cssSelector.jPlayer).bind($.jPlayer.event.play, function() { + $(this).jPlayer("pauseOthers"); + }); + + // Create a resize event handler to show the title in full screen mode. + $(this.cssSelector.jPlayer).bind($.jPlayer.event.resize, function(event) { + if(event.jPlayer.options.fullScreen) { + $(self.cssSelector.details).show(); + } else { + $(self.cssSelector.details).hide(); + } + }); + + // Create click handlers for the extra buttons that do playlist functions. + $(this.cssSelector.previous).click(function(e) { + e.preventDefault(); + self.previous(); + self.blur(this); + }); + + $(this.cssSelector.next).click(function(e) { + e.preventDefault(); + self.next(); + self.blur(this); + }); + + $(this.cssSelector.shuffle).click(function(e) { + e.preventDefault(); + if(self.shuffled && $(self.cssSelector.jPlayer).jPlayer("option", "useStateClassSkin")) { + self.shuffle(false); + } else { + self.shuffle(true); + } + self.blur(this); + }); + $(this.cssSelector.shuffleOff).click(function(e) { + e.preventDefault(); + self.shuffle(false); + self.blur(this); + }).hide(); + + // Put the title in its initial display state + if(!this.options.fullScreen) { + $(this.cssSelector.details).hide(); + } + + // Remove the empty
  • from the page HTML. Allows page to be valid HTML, while not interfereing with display animations + $(this.cssSelector.playlist + " ul").empty(); + + // Create .on() handlers for the playlist items along with the free media and remove controls. + this._createItemHandlers(); + + // Instance jPlayer + $(this.cssSelector.jPlayer).jPlayer(this.options); + }; + + jPlayerPlaylist.prototype = { + _cssSelector: { // static object, instanced in constructor + jPlayer: "#jquery_jplayer_1", + cssSelectorAncestor: "#jp_container_1" + }, + _options: { // static object, instanced in constructor + playlistOptions: { + autoPlay: false, + loopOnPrevious: false, + shuffleOnLoop: true, + enableRemoveControls: false, + displayTime: 'slow', + addTime: 'fast', + removeTime: 'fast', + shuffleTime: 'slow', + itemClass: "jp-playlist-item", + freeGroupClass: "jp-free-media", + freeItemClass: "jp-playlist-item-free", + removeItemClass: "jp-playlist-item-remove" + } + }, + option: function(option, value) { // For changing playlist options only + if(value === undefined) { + return this.options.playlistOptions[option]; + } + + this.options.playlistOptions[option] = value; + + switch(option) { + case "enableRemoveControls": + this._updateControls(); + break; + case "itemClass": + case "freeGroupClass": + case "freeItemClass": + case "removeItemClass": + this._refresh(true); // Instant + this._createItemHandlers(); + break; + } + return this; + }, + _init: function() { + var self = this; + this._refresh(function() { + if(self.options.playlistOptions.autoPlay) { + self.play(self.current); + } else { + self.select(self.current); + } + }); + }, + _initPlaylist: function(playlist) { + this.current = 0; + this.shuffled = false; + this.removing = false; + this.original = $.extend(true, [], playlist); // Copy the Array of Objects + this._originalPlaylist(); + }, + _originalPlaylist: function() { + var self = this; + this.playlist = []; + // Make both arrays point to the same object elements. Gives us 2 different arrays, each pointing to the same actual object. ie., Not copies of the object. + $.each(this.original, function(i) { + self.playlist[i] = self.original[i]; + }); + }, + _refresh: function(instant) { + /* instant: Can be undefined, true or a function. + * undefined -> use animation timings + * true -> no animation + * function -> use animation timings and excute function at half way point. + */ + var self = this; + + if(instant && !$.isFunction(instant)) { + $(this.cssSelector.playlist + " ul").empty(); + $.each(this.playlist, function(i) { + $(self.cssSelector.playlist + " ul").append(self._createListItem(self.playlist[i])); + }); + this._updateControls(); + } else { + var displayTime = $(this.cssSelector.playlist + " ul").children().length ? this.options.playlistOptions.displayTime : 0; + + $(this.cssSelector.playlist + " ul").slideUp(displayTime, function() { + var $this = $(this); + $(this).empty(); + + $.each(self.playlist, function(i) { + $this.append(self._createListItem(self.playlist[i])); + }); + self._updateControls(); + if($.isFunction(instant)) { + instant(); + } + if(self.playlist.length) { + $(this).slideDown(self.options.playlistOptions.displayTime); + } else { + $(this).show(); + } + }); + } + }, + _createListItem: function(media) { + var self = this; + + // Wrap the
  • contents in a
    + var listItem = "
  • "; + + // Create remove control + listItem += "×"; + + // Create links to free media + if(media.free) { + var first = true; + listItem += "("; + $.each(media, function(property,value) { + if($.jPlayer.prototype.format[property]) { // Check property is a media format. + if(first) { + first = false; + } else { + listItem += " | "; + } + listItem += "" + property + ""; + } + }); + listItem += ")"; + } + + // The title is given next in the HTML otherwise the float:right on the free media corrupts in IE6/7 + listItem += "" + media.title + (media.artist ? " " : "") + ""; + listItem += "
  • "; + + return listItem; + }, + _createItemHandlers: function() { + var self = this; + // Create live handlers for the playlist items + $(this.cssSelector.playlist).off("click", "a." + this.options.playlistOptions.itemClass).on("click", "a." + this.options.playlistOptions.itemClass, function(e) { + e.preventDefault(); + var index = $(this).parent().parent().index(); + if(self.current !== index) { + self.play(index); + } else { + $(self.cssSelector.jPlayer).jPlayer("play"); + } + self.blur(this); + }); + + // Create live handlers that disable free media links to force access via right click + $(this.cssSelector.playlist).off("click", "a." + this.options.playlistOptions.freeItemClass).on("click", "a." + this.options.playlistOptions.freeItemClass, function(e) { + e.preventDefault(); + $(this).parent().parent().find("." + self.options.playlistOptions.itemClass).click(); + self.blur(this); + }); + + // Create live handlers for the remove controls + $(this.cssSelector.playlist).off("click", "a." + this.options.playlistOptions.removeItemClass).on("click", "a." + this.options.playlistOptions.removeItemClass, function(e) { + e.preventDefault(); + var index = $(this).parent().parent().index(); + self.remove(index); + self.blur(this); + }); + }, + _updateControls: function() { + if(this.options.playlistOptions.enableRemoveControls) { + $(this.cssSelector.playlist + " ." + this.options.playlistOptions.removeItemClass).show(); + } else { + $(this.cssSelector.playlist + " ." + this.options.playlistOptions.removeItemClass).hide(); + } + + if(this.shuffled) { + $(this.cssSelector.jPlayer).jPlayer("addStateClass", "shuffled"); + } else { + $(this.cssSelector.jPlayer).jPlayer("removeStateClass", "shuffled"); + } + if($(this.cssSelector.shuffle).length && $(this.cssSelector.shuffleOff).length) { + if(this.shuffled) { + $(this.cssSelector.shuffleOff).show(); + $(this.cssSelector.shuffle).hide(); + } else { + $(this.cssSelector.shuffleOff).hide(); + $(this.cssSelector.shuffle).show(); + } + } + }, + _highlight: function(index) { + if(this.playlist.length && index !== undefined) { + $(this.cssSelector.playlist + " .jp-playlist-current").removeClass("jp-playlist-current"); + $(this.cssSelector.playlist + " li:nth-child(" + (index + 1) + ")").addClass("jp-playlist-current").find(".jp-playlist-item").addClass("jp-playlist-current"); + // $(this.cssSelector.details + " li").html("" + (this.playlist[index].artist ? " " : "")); + } + }, + setPlaylist: function(playlist) { + this._initPlaylist(playlist); + this._init(); + }, + add: function(media, playNow) { + $(this.cssSelector.playlist + " ul").append(this._createListItem(media)).find("li:last-child").hide().slideDown(this.options.playlistOptions.addTime); + this._updateControls(); + this.original.push(media); + this.playlist.push(media); // Both array elements share the same object pointer. Comforms with _initPlaylist(p) system. + + if(playNow) { + this.play(this.playlist.length - 1); + } else { + if(this.original.length === 1) { + this.select(0); + } + } + }, + remove: function(index) { + var self = this; + + if(index === undefined) { + this._initPlaylist([]); + this._refresh(function() { + $(self.cssSelector.jPlayer).jPlayer("clearMedia"); + }); + return true; + } else { + + if(this.removing) { + return false; + } else { + index = (index < 0) ? self.original.length + index : index; // Negative index relates to end of array. + if(0 <= index && index < this.playlist.length) { + this.removing = true; + + $(this.cssSelector.playlist + " li:nth-child(" + (index + 1) + ")").slideUp(this.options.playlistOptions.removeTime, function() { + $(this).remove(); + + if(self.shuffled) { + var item = self.playlist[index]; + $.each(self.original, function(i) { + if(self.original[i] === item) { + self.original.splice(i, 1); + return false; // Exit $.each + } + }); + self.playlist.splice(index, 1); + } else { + self.original.splice(index, 1); + self.playlist.splice(index, 1); + } + + if(self.original.length) { + if(index === self.current) { + self.current = (index < self.original.length) ? self.current : self.original.length - 1; // To cope when last element being selected when it was removed + self.select(self.current); + } else if(index < self.current) { + self.current--; + } + } else { + $(self.cssSelector.jPlayer).jPlayer("clearMedia"); + self.current = 0; + self.shuffled = false; + self._updateControls(); + } + + self.removing = false; + }); + } + return true; + } + } + }, + select: function(index) { + index = (index < 0) ? this.original.length + index : index; // Negative index relates to end of array. + if(0 <= index && index < this.playlist.length) { + this.current = index; + this._highlight(index); + $(this.cssSelector.jPlayer).jPlayer("setMedia", this.playlist[this.current]); + } else { + this.current = 0; + } + }, + play: function(index) { + index = (index < 0) ? this.original.length + index : index; // Negative index relates to end of array. + if(0 <= index && index < this.playlist.length) { + if(this.playlist.length) { + this.select(index); + $(this.cssSelector.jPlayer).jPlayer("play"); + } + } else if(index === undefined) { + $(this.cssSelector.jPlayer).jPlayer("play"); + } + }, + pause: function() { + $(this.cssSelector.jPlayer).jPlayer("pause"); + }, + next: function() { + var index = (this.current + 1 < this.playlist.length) ? this.current + 1 : 0; + + if(this.loop) { + // See if we need to shuffle before looping to start, and only shuffle if more than 1 item. + if(index === 0 && this.shuffled && this.options.playlistOptions.shuffleOnLoop && this.playlist.length > 1) { + this.shuffle(true, true); // playNow + } else { + this.play(index); + } + } else { + // The index will be zero if it just looped round + if(index > 0) { + this.play(index); + } + } + }, + previous: function() { + var index = (this.current - 1 >= 0) ? this.current - 1 : this.playlist.length - 1; + + if(this.loop && this.options.playlistOptions.loopOnPrevious || index < this.playlist.length - 1) { + this.play(index); + } + }, + shuffle: function(shuffled, playNow) { + var self = this; + + if(shuffled === undefined) { + shuffled = !this.shuffled; + } + + if(shuffled || shuffled !== this.shuffled) { + + $(this.cssSelector.playlist + " ul").slideUp(this.options.playlistOptions.shuffleTime, function() { + self.shuffled = shuffled; + if(shuffled) { + self.playlist.sort(function() { + return 0.5 - Math.random(); + }); + } else { + self._originalPlaylist(); + } + self._refresh(true); // Instant + + if(playNow || !$(self.cssSelector.jPlayer).data("jPlayer").status.paused) { + self.play(0); + } else { + self.select(0); + } + + $(this).slideDown(self.options.playlistOptions.shuffleTime); + }); + } + }, + blur: function(that) { + if($(this.cssSelector.jPlayer).jPlayer("option", "autoBlur")) { + $(that).blur(); + } + } + }; +})(jQuery); diff --git a/media/jplayer/add-on/jplayer.playlist.min.js b/media/jplayer/add-on/jplayer.playlist.min.js new file mode 100644 index 00000000..6a0e866f --- /dev/null +++ b/media/jplayer/add-on/jplayer.playlist.min.js @@ -0,0 +1,2 @@ +/*! jPlayerPlaylist for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ +!function(a,b){jPlayerPlaylist=function(b,c,d){var e=this;this.current=0,this.loop=!1,this.shuffled=!1,this.removing=!1,this.cssSelector=a.extend({},this._cssSelector,b),this.options=a.extend(!0,{keyBindings:{next:{key:221,fn:function(){e.next()}},previous:{key:219,fn:function(){e.previous()}},shuffle:{key:83,fn:function(){e.shuffle()}}},stateClass:{shuffled:"jp-state-shuffled"}},this._options,d),this.playlist=[],this.original=[],this._initPlaylist(c),this.cssSelector.details=this.cssSelector.cssSelectorAncestor+" .jp-details",this.cssSelector.playlist=this.cssSelector.cssSelectorAncestor+" .jp-playlist",this.cssSelector.next=this.cssSelector.cssSelectorAncestor+" .jp-next",this.cssSelector.previous=this.cssSelector.cssSelectorAncestor+" .jp-previous",this.cssSelector.shuffle=this.cssSelector.cssSelectorAncestor+" .jp-shuffle",this.cssSelector.shuffleOff=this.cssSelector.cssSelectorAncestor+" .jp-shuffle-off",this.options.cssSelectorAncestor=this.cssSelector.cssSelectorAncestor,this.options.repeat=function(a){e.loop=a.jPlayer.options.loop},a(this.cssSelector.jPlayer).bind(a.jPlayer.event.ready,function(){e._init()}),a(this.cssSelector.jPlayer).bind(a.jPlayer.event.ended,function(){e.next()}),a(this.cssSelector.jPlayer).bind(a.jPlayer.event.play,function(){a(this).jPlayer("pauseOthers")}),a(this.cssSelector.jPlayer).bind(a.jPlayer.event.resize,function(b){b.jPlayer.options.fullScreen?a(e.cssSelector.details).show():a(e.cssSelector.details).hide()}),a(this.cssSelector.previous).click(function(a){a.preventDefault(),e.previous(),e.blur(this)}),a(this.cssSelector.next).click(function(a){a.preventDefault(),e.next(),e.blur(this)}),a(this.cssSelector.shuffle).click(function(b){b.preventDefault(),e.shuffle(e.shuffled&&a(e.cssSelector.jPlayer).jPlayer("option","useStateClassSkin")?!1:!0),e.blur(this)}),a(this.cssSelector.shuffleOff).click(function(a){a.preventDefault(),e.shuffle(!1),e.blur(this)}).hide(),this.options.fullScreen||a(this.cssSelector.details).hide(),a(this.cssSelector.playlist+" ul").empty(),this._createItemHandlers(),a(this.cssSelector.jPlayer).jPlayer(this.options)},jPlayerPlaylist.prototype={_cssSelector:{jPlayer:"#jquery_jplayer_1",cssSelectorAncestor:"#jp_container_1"},_options:{playlistOptions:{autoPlay:!1,loopOnPrevious:!1,shuffleOnLoop:!0,enableRemoveControls:!1,displayTime:"slow",addTime:"fast",removeTime:"fast",shuffleTime:"slow",itemClass:"jp-playlist-item",freeGroupClass:"jp-free-media",freeItemClass:"jp-playlist-item-free",removeItemClass:"jp-playlist-item-remove"}},option:function(a,c){if(c===b)return this.options.playlistOptions[a];switch(this.options.playlistOptions[a]=c,a){case"enableRemoveControls":this._updateControls();break;case"itemClass":case"freeGroupClass":case"freeItemClass":case"removeItemClass":this._refresh(!0),this._createItemHandlers()}return this},_init:function(){var a=this;this._refresh(function(){a.options.playlistOptions.autoPlay?a.play(a.current):a.select(a.current)})},_initPlaylist:function(b){this.current=0,this.shuffled=!1,this.removing=!1,this.original=a.extend(!0,[],b),this._originalPlaylist()},_originalPlaylist:function(){var b=this;this.playlist=[],a.each(this.original,function(a){b.playlist[a]=b.original[a]})},_refresh:function(b){var c=this;if(b&&!a.isFunction(b))a(this.cssSelector.playlist+" ul").empty(),a.each(this.playlist,function(b){a(c.cssSelector.playlist+" ul").append(c._createListItem(c.playlist[b]))}),this._updateControls();else{var d=a(this.cssSelector.playlist+" ul").children().length?this.options.playlistOptions.displayTime:0;a(this.cssSelector.playlist+" ul").slideUp(d,function(){var d=a(this);a(this).empty(),a.each(c.playlist,function(a){d.append(c._createListItem(c.playlist[a]))}),c._updateControls(),a.isFunction(b)&&b(),c.playlist.length?a(this).slideDown(c.options.playlistOptions.displayTime):a(this).show()})}},_createListItem:function(b){var c=this,d="
  • ";if(d+="×",b.free){var e=!0;d+="(",a.each(b,function(b,f){a.jPlayer.prototype.format[b]&&(e?e=!1:d+=" | ",d+=""+b+"")}),d+=")"}return d+=""+b.title+(b.artist?" ":"")+"",d+="
  • "},_createItemHandlers:function(){var b=this;a(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.itemClass).on("click","a."+this.options.playlistOptions.itemClass,function(c){c.preventDefault();var d=a(this).parent().parent().index();b.current!==d?b.play(d):a(b.cssSelector.jPlayer).jPlayer("play"),b.blur(this)}),a(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.freeItemClass).on("click","a."+this.options.playlistOptions.freeItemClass,function(c){c.preventDefault(),a(this).parent().parent().find("."+b.options.playlistOptions.itemClass).click(),b.blur(this)}),a(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.removeItemClass).on("click","a."+this.options.playlistOptions.removeItemClass,function(c){c.preventDefault();var d=a(this).parent().parent().index();b.remove(d),b.blur(this)})},_updateControls:function(){this.options.playlistOptions.enableRemoveControls?a(this.cssSelector.playlist+" ."+this.options.playlistOptions.removeItemClass).show():a(this.cssSelector.playlist+" ."+this.options.playlistOptions.removeItemClass).hide(),this.shuffled?a(this.cssSelector.jPlayer).jPlayer("addStateClass","shuffled"):a(this.cssSelector.jPlayer).jPlayer("removeStateClass","shuffled"),a(this.cssSelector.shuffle).length&&a(this.cssSelector.shuffleOff).length&&(this.shuffled?(a(this.cssSelector.shuffleOff).show(),a(this.cssSelector.shuffle).hide()):(a(this.cssSelector.shuffleOff).hide(),a(this.cssSelector.shuffle).show()))},_highlight:function(c){this.playlist.length&&c!==b&&(a(this.cssSelector.playlist+" .jp-playlist-current").removeClass("jp-playlist-current"),a(this.cssSelector.playlist+" li:nth-child("+(c+1)+")").addClass("jp-playlist-current").find(".jp-playlist-item").addClass("jp-playlist-current"))},setPlaylist:function(a){this._initPlaylist(a),this._init()},add:function(b,c){a(this.cssSelector.playlist+" ul").append(this._createListItem(b)).find("li:last-child").hide().slideDown(this.options.playlistOptions.addTime),this._updateControls(),this.original.push(b),this.playlist.push(b),c?this.play(this.playlist.length-1):1===this.original.length&&this.select(0)},remove:function(c){var d=this;return c===b?(this._initPlaylist([]),this._refresh(function(){a(d.cssSelector.jPlayer).jPlayer("clearMedia")}),!0):this.removing?!1:(c=0>c?d.original.length+c:c,c>=0&&cb?this.original.length+b:b,b>=0&&bc?this.original.length+c:c,c>=0&&c1?this.shuffle(!0,!0):this.play(a):a>0&&this.play(a)},previous:function(){var a=this.current-1>=0?this.current-1:this.playlist.length-1;(this.loop&&this.options.playlistOptions.loopOnPrevious||a' + (config.visible ? "Hide" : "Show") + ' jPlayer Inspector

    ' + + '
    ' + + '
    ' + + '
    ' + + '

    jPlayer events that have occurred over the past 1 second:' + + '
    (Backgrounds: Never occurred Occurred before Occurred Multiple occurrences reset)

    '; + + // MJP: Would use the next 3 lines for ease, but the events are just slapped on the page. + // $.each($.jPlayer.event, function(eventName,eventType) { + // structure += '
    ' + eventName + '
    '; + // }); + + var eventStyle = "float:left;margin:0 5px 5px 0;padding:0 5px;border:1px dotted #000;"; + // MJP: Doing it longhand so order and layout easier to control. + structure += + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + + + '
    '; + + // MJP: Would like a check here in case we missed an event. + + // MJP: Check fails, since it is not on the page yet. +/* $.each($.jPlayer.event, function(eventName,eventType) { + if($("#" + config.eventId[eventType])[0] === undefined) { + structure += '
    ' + eventName + '
    '; + } + }); +*/ + structure += + '
    ' + + '

    Update jPlayer Inspector

    ' + + '
    ' + + '
    '; + $(this).html(structure); + + config.windowJq = $("#" + config.windowId); + config.statusJq = $("#" + config.statusId); + config.configJq = $("#" + config.configId); + config.toggleJq = $("#" + config.toggleId); + config.eventResetJq = $("#" + config.eventResetId); + config.updateJq = $("#" + config.updateId); + + $.each($.jPlayer.event, function(eventName,eventType) { + config.eventJq[eventType] = $("#" + config.eventId[eventType]); + config.eventJq[eventType].text(eventName + " (" + config.eventOccurrence[eventType] + ")"); // Sets the text to the event name and (0); + + config.jPlayer.bind(eventType + ".jPlayerInspector", function(e) { + config.eventOccurrence[e.type]++; + if(config.eventOccurrence[e.type] > 1) { + config.eventJq[e.type].css("background-color","#ff9"); + } else { + config.eventJq[e.type].css("background-color","#9f9"); + } + config.eventJq[e.type].text(eventName + " (" + config.eventOccurrence[e.type] + ")"); + // The timer to handle the color + clearTimeout(config.eventTimeout[e.type]); + config.eventTimeout[e.type] = setTimeout(function() { + config.eventJq[e.type].css("background-color","#fff"); + }, 1000); + // The timer to handle the occurences. + setTimeout(function() { + config.eventOccurrence[e.type]--; + config.eventJq[e.type].text(eventName + " (" + config.eventOccurrence[e.type] + ")"); + }, 1000); + if(config.visible) { // Update the status, if inspector open. + $this.jPlayerInspector("updateStatus"); + } + }); + }); + + config.jPlayer.bind($.jPlayer.event.ready + ".jPlayerInspector", function(e) { + $this.jPlayerInspector("updateConfig"); + }); + + config.toggleJq.click(function() { + if(config.visible) { + $(this).text("Show"); + config.windowJq.hide(); + config.statusJq.empty(); + config.configJq.empty(); + } else { + $(this).text("Hide"); + config.windowJq.show(); + config.updateJq.click(); + } + config.visible = !config.visible; + $(this).blur(); + return false; + }); + + config.eventResetJq.click(function() { + $.each($.jPlayer.event, function(eventName,eventType) { + config.eventJq[eventType].css("background-color","#eee"); + }); + $(this).blur(); + return false; + }); + + config.updateJq.click(function() { + $this.jPlayerInspector("updateStatus"); + $this.jPlayerInspector("updateConfig"); + return false; + }); + + if(!config.visible) { + config.windowJq.hide(); + } else { + // config.updateJq.click(); + } + + $.jPlayerInspector.i++; + + return this; + }, + destroy: function() { + $(this).data("jPlayerInspector") && $(this).data("jPlayerInspector").jPlayer.unbind(".jPlayerInspector"); + $(this).empty(); + }, + updateConfig: function() { // This displays information about jPlayer's configuration in inspector + + var jPlayerInfo = "

    This jPlayer instance is running in your browser where:
    " + + for(i = 0; i < $(this).data("jPlayerInspector").jPlayer.data("jPlayer").solutions.length; i++) { + var solution = $(this).data("jPlayerInspector").jPlayer.data("jPlayer").solutions[i]; + jPlayerInfo += " jPlayer's " + solution + " solution is"; + if($(this).data("jPlayerInspector").jPlayer.data("jPlayer")[solution].used) { + jPlayerInfo += " being used and will support:"; + for(format in $(this).data("jPlayerInspector").jPlayer.data("jPlayer")[solution].support) { + if($(this).data("jPlayerInspector").jPlayer.data("jPlayer")[solution].support[format]) { + jPlayerInfo += " " + format; + } + } + jPlayerInfo += "
    "; + } else { + jPlayerInfo += " not required
    "; + } + } + jPlayerInfo += "

    "; + + if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.active) { + if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active) { + jPlayerInfo += "Problem with jPlayer since both HTML5 and Flash are active."; + } else { + jPlayerInfo += "The HTML5 is active."; + } + } else { + if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active) { + jPlayerInfo += "The Flash is active."; + } else { + jPlayerInfo += "No solution is currently active. jPlayer needs a setMedia()."; + } + } + jPlayerInfo += "

    "; + + var formatType = $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.formatType; + jPlayerInfo += "

    status.formatType = '" + formatType + "'
    "; + if(formatType) { + jPlayerInfo += "Browser canPlay('" + $.jPlayer.prototype.format[formatType].codec + "')"; + } else { + jPlayerInfo += "

    "; + } + + jPlayerInfo += "

    status.src = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.src + "'

    "; + + jPlayerInfo += "

    status.media = {
    "; + for(prop in $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media) { + jPlayerInfo += " " + prop + ": " + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media[prop] + "
    "; // Some are strings + } + jPlayerInfo += "};

    " + + jPlayerInfo += "

    "; + jPlayerInfo += "status.videoWidth = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoWidth + "'"; + jPlayerInfo += " | status.videoHeight = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoHeight + "'"; + jPlayerInfo += "
    status.width = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.width + "'"; + jPlayerInfo += " | status.height = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.height + "'"; + jPlayerInfo += "

    "; + + + "

    Raw browser test for HTML5 support. Should equal a function if HTML5 is available.
    "; + if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.audio.available) { + jPlayerInfo += "htmlElement.audio.canPlayType = " + (typeof $(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.audio.canPlayType) +"
    " + } + if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.video.available) { + jPlayerInfo += "htmlElement.video.canPlayType = " + (typeof $(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.video.canPlayType) +""; + } + jPlayerInfo += "

    "; + + jPlayerInfo += "

    This instance is using the constructor options:
    " + + "$('#" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").internal.self.id + "').jPlayer({
    " + + + " swfPath: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "swfPath") + "',
    " + + + " solution: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "solution") + "',
    " + + + " supplied: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "supplied") + "',
    " + + + " preload: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "preload") + "',
    " + + + " volume: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "volume") + ",
    " + + + " muted: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "muted") + ",
    " + + + " backgroundColor: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "backgroundColor") + "',
    " + + + " cssSelectorAncestor: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "cssSelectorAncestor") + "',
    " + + + " cssSelector: {"; + + var cssSelector = $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "cssSelector"); + for(prop in cssSelector) { + + // jPlayerInfo += "
      " + prop + ": '" + cssSelector[prop] + "'," // This works too of course, but want to use option method for deep keys. + jPlayerInfo += "
      " + prop + ": '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "cssSelector." + prop) + "'," + } + + jPlayerInfo = jPlayerInfo.slice(0, -1); // Because the sloppy comma was bugging me. + + jPlayerInfo += "
     },
    " + + + " errorAlerts: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "errorAlerts") + ",
    " + + + " warningAlerts: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "warningAlerts") + "
    " + + + "});

    "; + $(this).data("jPlayerInspector").configJq.html(jPlayerInfo); + return this; + }, + updateStatus: function() { // This displays information about jPlayer's status in the inspector + $(this).data("jPlayerInspector").statusJq.html( + "

    jPlayer is " + + ($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.paused ? "paused" : "playing") + + " at time: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentTime*10)/10 + "s." + + " (d: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.duration*10)/10 + "s" + + ", sp: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.seekPercent) + "%" + + ", cpr: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentRelative) + "%" + + ", cpa: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentAbsolute) + "%)

    " + ); + return this; + } + }; + $.fn.jPlayerInspector = function( method ) { + // Method calling logic + if ( methods[method] ) { + return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof method === 'object' || ! method ) { + return methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + method + ' does not exist on jQuery.jPlayerInspector' ); + } + }; +})(jQuery); diff --git a/media/jplayer/add-on/jquery.jplayer.inspector.min.js b/media/jplayer/add-on/jquery.jplayer.inspector.min.js new file mode 100644 index 00000000..69925c84 --- /dev/null +++ b/media/jplayer/add-on/jquery.jplayer.inspector.min.js @@ -0,0 +1,2 @@ +/*! jPlayerInspector for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ +!function(a,b){a.jPlayerInspector={},a.jPlayerInspector.i=0,a.jPlayerInspector.defaults={jPlayer:b,idPrefix:"jplayer_inspector_",visible:!1};var c={init:function(b){var c=a(this),d=a.extend({},a.jPlayerInspector.defaults,b);a(this).data("jPlayerInspector",d),d.id=a(this).attr("id"),d.jPlayerId=d.jPlayer.attr("id"),d.windowId=d.idPrefix+"window_"+a.jPlayerInspector.i,d.statusId=d.idPrefix+"status_"+a.jPlayerInspector.i,d.configId=d.idPrefix+"config_"+a.jPlayerInspector.i,d.toggleId=d.idPrefix+"toggle_"+a.jPlayerInspector.i,d.eventResetId=d.idPrefix+"event_reset_"+a.jPlayerInspector.i,d.updateId=d.idPrefix+"update_"+a.jPlayerInspector.i,d.eventWindowId=d.idPrefix+"event_window_"+a.jPlayerInspector.i,d.eventId={},d.eventJq={},d.eventTimeout={},d.eventOccurrence={},a.each(a.jPlayer.event,function(b,c){d.eventId[c]=d.idPrefix+"event_"+b+"_"+a.jPlayerInspector.i,d.eventOccurrence[c]=0});var e='

    '+(d.visible?"Hide":"Show")+' jPlayer Inspector

    jPlayer events that have occurred over the past 1 second:
    (Backgrounds: Never occurred Occurred before Occurred Multiple occurrences reset)

    ',f="float:left;margin:0 5px 5px 0;padding:0 5px;border:1px dotted #000;";return e+='
    ',e+='

    Update jPlayer Inspector

    ',a(this).html(e),d.windowJq=a("#"+d.windowId),d.statusJq=a("#"+d.statusId),d.configJq=a("#"+d.configId),d.toggleJq=a("#"+d.toggleId),d.eventResetJq=a("#"+d.eventResetId),d.updateJq=a("#"+d.updateId),a.each(a.jPlayer.event,function(b,e){d.eventJq[e]=a("#"+d.eventId[e]),d.eventJq[e].text(b+" ("+d.eventOccurrence[e]+")"),d.jPlayer.bind(e+".jPlayerInspector",function(a){d.eventOccurrence[a.type]++,d.eventOccurrence[a.type]>1?d.eventJq[a.type].css("background-color","#ff9"):d.eventJq[a.type].css("background-color","#9f9"),d.eventJq[a.type].text(b+" ("+d.eventOccurrence[a.type]+")"),clearTimeout(d.eventTimeout[a.type]),d.eventTimeout[a.type]=setTimeout(function(){d.eventJq[a.type].css("background-color","#fff")},1e3),setTimeout(function(){d.eventOccurrence[a.type]--,d.eventJq[a.type].text(b+" ("+d.eventOccurrence[a.type]+")")},1e3),d.visible&&c.jPlayerInspector("updateStatus")})}),d.jPlayer.bind(a.jPlayer.event.ready+".jPlayerInspector",function(){c.jPlayerInspector("updateConfig")}),d.toggleJq.click(function(){return d.visible?(a(this).text("Show"),d.windowJq.hide(),d.statusJq.empty(),d.configJq.empty()):(a(this).text("Hide"),d.windowJq.show(),d.updateJq.click()),d.visible=!d.visible,a(this).blur(),!1}),d.eventResetJq.click(function(){return a.each(a.jPlayer.event,function(a,b){d.eventJq[b].css("background-color","#eee")}),a(this).blur(),!1}),d.updateJq.click(function(){return c.jPlayerInspector("updateStatus"),c.jPlayerInspector("updateConfig"),!1}),d.visible||d.windowJq.hide(),a.jPlayerInspector.i++,this},destroy:function(){a(this).data("jPlayerInspector")&&a(this).data("jPlayerInspector").jPlayer.unbind(".jPlayerInspector"),a(this).empty()},updateConfig:function(){var b="

    This jPlayer instance is running in your browser where:
    ";for(i=0;i"+c+" solution is",a(this).data("jPlayerInspector").jPlayer.data("jPlayer")[c].used){b+=" being used and will support:";for(format in a(this).data("jPlayerInspector").jPlayer.data("jPlayer")[c].support)a(this).data("jPlayerInspector").jPlayer.data("jPlayer")[c].support[format]&&(b+=" "+format);b+="
    "}else b+=" not required
    "}b+="

    ",b+=a(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.active?a(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active?"Problem with jPlayer since both HTML5 and Flash are active.":"The HTML5 is active.":a(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active?"The Flash is active.":"No solution is currently active. jPlayer needs a setMedia().",b+="

    ";var d=a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.formatType;b+="

    status.formatType = '"+d+"'
    ",b+=d?"Browser canPlay('"+a.jPlayer.prototype.format[d].codec+"')":"

    ",b+="

    status.src = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.src+"'

    ",b+="

    status.media = {
    ";for(prop in a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media)b+=" "+prop+": "+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media[prop]+"
    ";b+="};

    ",b+="

    ",b+="status.videoWidth = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoWidth+"'",b+=" | status.videoHeight = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoHeight+"'",b+="
    status.width = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.width+"'",b+=" | status.height = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.height+"'",b+="

    ",a(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.audio.available&&(b+="htmlElement.audio.canPlayType = "+typeof a(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.audio.canPlayType+"
    "),a(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.video.available&&(b+="htmlElement.video.canPlayType = "+typeof a(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.video.canPlayType+""),b+="

    ",b+="

    This instance is using the constructor options:
    $('#"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").internal.self.id+"').jPlayer({
     swfPath: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","swfPath")+"',
     solution: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","solution")+"',
     supplied: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","supplied")+"',
     preload: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","preload")+"',
     volume: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","volume")+",
     muted: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","muted")+",
     backgroundColor: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","backgroundColor")+"',
     cssSelectorAncestor: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","cssSelectorAncestor")+"',
     cssSelector: {";var e=a(this).data("jPlayerInspector").jPlayer.jPlayer("option","cssSelector");for(prop in e)b+="
      "+prop+": '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","cssSelector."+prop)+"',";return b=b.slice(0,-1),b+="
     },
     errorAlerts: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","errorAlerts")+",
     warningAlerts: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","warningAlerts")+"
    });

    ",a(this).data("jPlayerInspector").configJq.html(b),this},updateStatus:function(){return a(this).data("jPlayerInspector").statusJq.html("

    jPlayer is "+(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.paused?"paused":"playing")+" at time: "+Math.floor(10*a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentTime)/10+"s. (d: "+Math.floor(10*a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.duration)/10+"s, sp: "+Math.floor(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.seekPercent)+"%, cpr: "+Math.floor(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentRelative)+"%, cpa: "+Math.floor(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentAbsolute)+"%)

    "),this}};a.fn.jPlayerInspector=function(b){return c[b]?c[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.jPlayerInspector"):c.init.apply(this,arguments)}}(jQuery); \ No newline at end of file diff --git a/media/jplayer/jplayer/jquery.jplayer.js b/media/jplayer/jplayer/jquery.jplayer.js new file mode 100644 index 00000000..842f31b6 --- /dev/null +++ b/media/jplayer/jplayer/jquery.jplayer.js @@ -0,0 +1,3506 @@ +/* + * jPlayer Plugin for jQuery JavaScript Library + * http://www.jplayer.org + * + * Copyright (c) 2009 - 2014 Happyworm Ltd + * Licensed under the MIT license. + * http://opensource.org/licenses/MIT + * + * Author: Mark J Panaghiston + * Version: 2.9.2 + * Date: 14th December 2014 + */ + +/* Support for Zepto 1.0 compiled with optional data module. + * For AMD or NODE/CommonJS support, you will need to manually switch the related 2 lines in the code below. + * Search terms: "jQuery Switch" and "Zepto Switch" + */ + +(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); // jQuery Switch + // define(['zepto'], factory); // Zepto Switch + } else if (typeof exports === 'object') { + // Node/CommonJS + factory(require('jquery')); // jQuery Switch + //factory(require('zepto')); // Zepto Switch + } else { + // Browser globals + if(root.jQuery) { // Use jQuery if available + factory(root.jQuery); + } else { // Otherwise, use Zepto + factory(root.Zepto); + } + } +}(this, function ($, undefined) { + + // Adapted from jquery.ui.widget.js (1.8.7): $.widget.bridge - Tweaked $.data(this,XYZ) to $(this).data(XYZ) for Zepto + $.fn.jPlayer = function( options ) { + var name = "jPlayer"; + var isMethodCall = typeof options === "string", + args = Array.prototype.slice.call( arguments, 1 ), + returnValue = this; + + // allow multiple hashes to be passed on init + options = !isMethodCall && args.length ? + $.extend.apply( null, [ true, options ].concat(args) ) : + options; + + // prevent calls to internal methods + if ( isMethodCall && options.charAt( 0 ) === "_" ) { + return returnValue; + } + + if ( isMethodCall ) { + this.each(function() { + var instance = $(this).data( name ), + methodValue = instance && $.isFunction( instance[options] ) ? + instance[ options ].apply( instance, args ) : + instance; + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue; + return false; + } + }); + } else { + this.each(function() { + var instance = $(this).data( name ); + if ( instance ) { + // instance.option( options || {} )._init(); // Orig jquery.ui.widget.js code: Not recommend for jPlayer. ie., Applying new options to an existing instance (via the jPlayer constructor) and performing the _init(). The _init() is what concerns me. It would leave a lot of event handlers acting on jPlayer instance and the interface. + instance.option( options || {} ); // The new constructor only changes the options. Changing options only has basic support atm. + } else { + $(this).data( name, new $.jPlayer( options, this ) ); + } + }); + } + + return returnValue; + }; + + $.jPlayer = function( options, element ) { + // allow instantiation without initializing for simple inheritance + if ( arguments.length ) { + this.element = $(element); + this.options = $.extend(true, {}, + this.options, + options + ); + var self = this; + this.element.bind( "remove.jPlayer", function() { + self.destroy(); + }); + this._init(); + } + }; + // End of: (Adapted from jquery.ui.widget.js (1.8.7)) + + // Zepto is missing one of the animation methods. + if(typeof $.fn.stop !== 'function') { + $.fn.stop = function() {}; + } + + // Emulated HTML5 methods and properties + $.jPlayer.emulateMethods = "load play pause"; + $.jPlayer.emulateStatus = "src readyState networkState currentTime duration paused ended playbackRate"; + $.jPlayer.emulateOptions = "muted volume"; + + // Reserved event names generated by jPlayer that are not part of the HTML5 Media element spec + $.jPlayer.reservedEvent = "ready flashreset resize repeat error warning"; + + // Events generated by jPlayer + $.jPlayer.event = {}; + $.each( + [ + 'ready', + 'setmedia', // Fires when the media is set + 'flashreset', // Similar to the ready event if the Flash solution is set to display:none and then shown again or if it's reloaded for another reason by the browser. For example, using CSS position:fixed on Firefox for the full screen feature. + 'resize', // Occurs when the size changes through a full/restore screen operation or if the size/sizeFull options are changed. + 'repeat', // Occurs when the repeat status changes. Usually through clicks on the repeat button of the interface. + 'click', // Occurs when the user clicks on one of the following: poster image, html video, flash video. + 'error', // Event error code in event.jPlayer.error.type. See $.jPlayer.error + 'warning', // Event warning code in event.jPlayer.warning.type. See $.jPlayer.warning + + // Other events match HTML5 spec. + 'loadstart', + 'progress', + 'suspend', + 'abort', + 'emptied', + 'stalled', + 'play', + 'pause', + 'loadedmetadata', + 'loadeddata', + 'waiting', + 'playing', + 'canplay', + 'canplaythrough', + 'seeking', + 'seeked', + 'timeupdate', + 'ended', + 'ratechange', + 'durationchange', + 'volumechange' + ], + function() { + $.jPlayer.event[ this ] = 'jPlayer_' + this; + } + ); + + $.jPlayer.htmlEvent = [ // These HTML events are bubbled through to the jPlayer event, without any internal action. + "loadstart", + // "progress", // jPlayer uses internally before bubbling. + // "suspend", // jPlayer uses internally before bubbling. + "abort", + // "error", // jPlayer uses internally before bubbling. + "emptied", + "stalled", + // "play", // jPlayer uses internally before bubbling. + // "pause", // jPlayer uses internally before bubbling. + "loadedmetadata", + // "loadeddata", // jPlayer uses internally before bubbling. + // "waiting", // jPlayer uses internally before bubbling. + // "playing", // jPlayer uses internally before bubbling. + "canplay", + "canplaythrough" + // "seeking", // jPlayer uses internally before bubbling. + // "seeked", // jPlayer uses internally before bubbling. + // "timeupdate", // jPlayer uses internally before bubbling. + // "ended", // jPlayer uses internally before bubbling. + // "ratechange" // jPlayer uses internally before bubbling. + // "durationchange" // jPlayer uses internally before bubbling. + // "volumechange" // jPlayer uses internally before bubbling. + ]; + + $.jPlayer.pause = function() { + $.jPlayer.prototype.destroyRemoved(); + $.each($.jPlayer.prototype.instances, function(i, element) { + if(element.data("jPlayer").status.srcSet) { // Check that media is set otherwise would cause error event. + element.jPlayer("pause"); + } + }); + }; + + // Default for jPlayer option.timeFormat + $.jPlayer.timeFormat = { + showHour: false, + showMin: true, + showSec: true, + padHour: false, + padMin: true, + padSec: true, + sepHour: ":", + sepMin: ":", + sepSec: "" + }; + var ConvertTime = function() { + this.init(); + }; + ConvertTime.prototype = { + init: function() { + this.options = { + timeFormat: $.jPlayer.timeFormat + }; + }, + time: function(s) { // function used on jPlayer.prototype._convertTime to enable per instance options. + s = (s && typeof s === 'number') ? s : 0; + + var myTime = new Date(s * 1000), + hour = myTime.getUTCHours(), + min = this.options.timeFormat.showHour ? myTime.getUTCMinutes() : myTime.getUTCMinutes() + hour * 60, + sec = this.options.timeFormat.showMin ? myTime.getUTCSeconds() : myTime.getUTCSeconds() + min * 60, + strHour = (this.options.timeFormat.padHour && hour < 10) ? "0" + hour : hour, + strMin = (this.options.timeFormat.padMin && min < 10) ? "0" + min : min, + strSec = (this.options.timeFormat.padSec && sec < 10) ? "0" + sec : sec, + strTime = ""; + + strTime += this.options.timeFormat.showHour ? strHour + this.options.timeFormat.sepHour : ""; + strTime += this.options.timeFormat.showMin ? strMin + this.options.timeFormat.sepMin : ""; + strTime += this.options.timeFormat.showSec ? strSec + this.options.timeFormat.sepSec : ""; + + return strTime; + } + }; + var myConvertTime = new ConvertTime(); + $.jPlayer.convertTime = function(s) { + return myConvertTime.time(s); + }; + + // Adapting jQuery 1.4.4 code for jQuery.browser. Required since jQuery 1.3.2 does not detect Chrome as webkit. + $.jPlayer.uaBrowser = function( userAgent ) { + var ua = userAgent.toLowerCase(); + + // Useragent RegExp + var rwebkit = /(webkit)[ \/]([\w.]+)/; + var ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/; + var rmsie = /(msie) ([\w.]+)/; + var rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/; + + var match = rwebkit.exec( ua ) || + ropera.exec( ua ) || + rmsie.exec( ua ) || + ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || + []; + + return { browser: match[1] || "", version: match[2] || "0" }; + }; + + // Platform sniffer for detecting mobile devices + $.jPlayer.uaPlatform = function( userAgent ) { + var ua = userAgent.toLowerCase(); + + // Useragent RegExp + var rplatform = /(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/; + var rtablet = /(ipad|playbook)/; + var randroid = /(android)/; + var rmobile = /(mobile)/; + + var platform = rplatform.exec( ua ) || []; + var tablet = rtablet.exec( ua ) || + !rmobile.exec( ua ) && randroid.exec( ua ) || + []; + + if(platform[1]) { + platform[1] = platform[1].replace(/\s/g, "_"); // Change whitespace to underscore. Enables dot notation. + } + + return { platform: platform[1] || "", tablet: tablet[1] || "" }; + }; + + $.jPlayer.browser = { + }; + $.jPlayer.platform = { + }; + + var browserMatch = $.jPlayer.uaBrowser(navigator.userAgent); + if ( browserMatch.browser ) { + $.jPlayer.browser[ browserMatch.browser ] = true; + $.jPlayer.browser.version = browserMatch.version; + } + var platformMatch = $.jPlayer.uaPlatform(navigator.userAgent); + if ( platformMatch.platform ) { + $.jPlayer.platform[ platformMatch.platform ] = true; + $.jPlayer.platform.mobile = !platformMatch.tablet; + $.jPlayer.platform.tablet = !!platformMatch.tablet; + } + + // Internet Explorer (IE) Browser Document Mode Sniffer. Based on code at: + // http://msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspx#GetMode + $.jPlayer.getDocMode = function() { + var docMode; + if ($.jPlayer.browser.msie) { + if (document.documentMode) { // IE8 or later + docMode = document.documentMode; + } else { // IE 5-7 + docMode = 5; // Assume quirks mode unless proven otherwise + if (document.compatMode) { + if (document.compatMode === "CSS1Compat") { + docMode = 7; // standards mode + } + } + } + } + return docMode; + }; + $.jPlayer.browser.documentMode = $.jPlayer.getDocMode(); + + $.jPlayer.nativeFeatures = { + init: function() { + + /* Fullscreen function naming influenced by W3C naming. + * No support for: Mozilla Proposal: https://wiki.mozilla.org/Gecko:FullScreenAPI + */ + + var d = document, + v = d.createElement('video'), + spec = { + // http://www.w3.org/TR/fullscreen/ + w3c: [ + 'fullscreenEnabled', + 'fullscreenElement', + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenchange', + 'fullscreenerror' + ], + // https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode + moz: [ + 'mozFullScreenEnabled', + 'mozFullScreenElement', + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + // http://developer.apple.com/library/safari/#documentation/WebKit/Reference/ElementClassRef/Element/Element.html + // http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html + webkit: [ + '', + 'webkitCurrentFullScreenElement', + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + '' + ], + // http://developer.apple.com/library/safari/#documentation/AudioVideo/Reference/HTMLVideoElementClassReference/HTMLVideoElement/HTMLVideoElement.html + // https://developer.apple.com/library/safari/samplecode/HTML5VideoEventFlow/Listings/events_js.html#//apple_ref/doc/uid/DTS40010085-events_js-DontLinkElementID_5 + // Events: 'webkitbeginfullscreen' and 'webkitendfullscreen' + webkitVideo: [ + 'webkitSupportsFullscreen', + 'webkitDisplayingFullscreen', + 'webkitEnterFullscreen', + 'webkitExitFullscreen', + '', + '' + ], + ms: [ + '', + 'msFullscreenElement', + 'msRequestFullscreen', + 'msExitFullscreen', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + }, + specOrder = [ + 'w3c', + 'moz', + 'webkit', + 'webkitVideo', + 'ms' + ], + fs, i, il; + + this.fullscreen = fs = { + support: { + w3c: !!d[spec.w3c[0]], + moz: !!d[spec.moz[0]], + webkit: typeof d[spec.webkit[3]] === 'function', + webkitVideo: typeof v[spec.webkitVideo[2]] === 'function', + ms: typeof v[spec.ms[2]] === 'function' + }, + used: {} + }; + + // Store the name of the spec being used and as a handy boolean. + for(i = 0, il = specOrder.length; i < il; i++) { + var n = specOrder[i]; + if(fs.support[n]) { + fs.spec = n; + fs.used[n] = true; + break; + } + } + + if(fs.spec) { + var s = spec[fs.spec]; + fs.api = { + fullscreenEnabled: true, + fullscreenElement: function(elem) { + elem = elem ? elem : d; // Video element required for webkitVideo + return elem[s[1]]; + }, + requestFullscreen: function(elem) { + return elem[s[2]](); // Chrome and Opera want parameter (Element.ALLOW_KEYBOARD_INPUT) but Safari fails if flag used. + }, + exitFullscreen: function(elem) { + elem = elem ? elem : d; // Video element required for webkitVideo + return elem[s[3]](); + } + }; + fs.event = { + fullscreenchange: s[4], + fullscreenerror: s[5] + }; + } else { + fs.api = { + fullscreenEnabled: false, + fullscreenElement: function() { + return null; + }, + requestFullscreen: function() {}, + exitFullscreen: function() {} + }; + fs.event = {}; + } + } + }; + $.jPlayer.nativeFeatures.init(); + + // The keyboard control system. + + // The current jPlayer instance in focus. + $.jPlayer.focus = null; + + // The list of element node names to ignore with key controls. + $.jPlayer.keyIgnoreElementNames = "A INPUT TEXTAREA SELECT BUTTON"; + + // The function that deals with key presses. + var keyBindings = function(event) { + var f = $.jPlayer.focus, + ignoreKey; + + // A jPlayer instance must be in focus. ie., keyEnabled and the last one played. + if(f) { + // What generated the key press? + $.each( $.jPlayer.keyIgnoreElementNames.split(/\s+/g), function(i, name) { + // The strings should already be uppercase. + if(event.target.nodeName.toUpperCase() === name.toUpperCase()) { + ignoreKey = true; + return false; // exit each. + } + }); + if(!ignoreKey) { + // See if the key pressed matches any of the bindings. + $.each(f.options.keyBindings, function(action, binding) { + // The binding could be a null when the default has been disabled. ie., 1st clause in if() + if( + (binding && $.isFunction(binding.fn)) && + ((typeof binding.key === 'number' && event.which === binding.key) || + (typeof binding.key === 'string' && event.key === binding.key)) + ) { + event.preventDefault(); // Key being used by jPlayer, so prevent default operation. + binding.fn(f); + return false; // exit each. + } + }); + } + } + }; + + $.jPlayer.keys = function(en) { + var event = "keydown.jPlayer"; + // Remove any binding, just in case enabled more than once. + $(document.documentElement).unbind(event); + if(en) { + $(document.documentElement).bind(event, keyBindings); + } + }; + + // Enable the global key control handler ready for any jPlayer instance with the keyEnabled option enabled. + $.jPlayer.keys(true); + + $.jPlayer.prototype = { + count: 0, // Static Variable: Change it via prototype. + version: { // Static Object + script: "2.9.2", + needFlash: "2.9.0", + flash: "unknown" + }, + options: { // Instanced in $.jPlayer() constructor + swfPath: "js", // Path to jquery.jplayer.swf. Can be relative, absolute or server root relative. + solution: "html, flash", // Valid solutions: html, flash, aurora. Order defines priority. 1st is highest, + supplied: "mp3", // Defines which formats jPlayer will try and support and the priority by the order. 1st is highest, + auroraFormats: "wav", // List the aurora.js codecs being loaded externally. Its core supports "wav". Specify format in jPlayer context. EG., The aac.js codec gives the "m4a" format. + preload: 'metadata', // HTML5 Spec values: none, metadata, auto. + volume: 0.8, // The volume. Number 0 to 1. + muted: false, + remainingDuration: false, // When true, the remaining time is shown in the duration GUI element. + toggleDuration: false, // When true, clicks on the duration toggle between the duration and remaining display. + captureDuration: true, // When true, clicks on the duration are captured and no longer propagate up the DOM. + playbackRate: 1, + defaultPlaybackRate: 1, + minPlaybackRate: 0.5, + maxPlaybackRate: 4, + wmode: "opaque", // Valid wmode: window, transparent, opaque, direct, gpu. + backgroundColor: "#000000", // To define the jPlayer div and Flash background color. + cssSelectorAncestor: "#jp_container_1", + cssSelector: { // * denotes properties that should only be required when video media type required. _cssSelector() would require changes to enable splitting these into Audio and Video defaults. + videoPlay: ".jp-video-play", // * + play: ".jp-play", + pause: ".jp-pause", + stop: ".jp-stop", + seekBar: ".jp-seek-bar", + playBar: ".jp-play-bar", + mute: ".jp-mute", + unmute: ".jp-unmute", + volumeBar: ".jp-volume-bar", + volumeBarValue: ".jp-volume-bar-value", + volumeMax: ".jp-volume-max", + playbackRateBar: ".jp-playback-rate-bar", + playbackRateBarValue: ".jp-playback-rate-bar-value", + currentTime: ".jp-current-time", + duration: ".jp-duration", + title: ".jp-title", + fullScreen: ".jp-full-screen", // * + restoreScreen: ".jp-restore-screen", // * + repeat: ".jp-repeat", + repeatOff: ".jp-repeat-off", + gui: ".jp-gui", // The interface used with autohide feature. + noSolution: ".jp-no-solution" // For error feedback when jPlayer cannot find a solution. + }, + stateClass: { // Classes added to the cssSelectorAncestor to indicate the state. + playing: "jp-state-playing", + seeking: "jp-state-seeking", + muted: "jp-state-muted", + looped: "jp-state-looped", + fullScreen: "jp-state-full-screen", + noVolume: "jp-state-no-volume" + }, + useStateClassSkin: false, // A state class skin relies on the state classes to change the visual appearance. The single control toggles the effect, for example: play then pause, mute then unmute. + autoBlur: true, // GUI control handlers will drop focus after clicks. + smoothPlayBar: false, // Smooths the play bar transitions, which affects clicks and short media with big changes per second. + fullScreen: false, // Native Full Screen + fullWindow: false, + autohide: { + restored: false, // Controls the interface autohide feature. + full: true, // Controls the interface autohide feature. + fadeIn: 200, // Milliseconds. The period of the fadeIn anim. + fadeOut: 600, // Milliseconds. The period of the fadeOut anim. + hold: 1000 // Milliseconds. The period of the pause before autohide beings. + }, + loop: false, + repeat: function(event) { // The default jPlayer repeat event handler + if(event.jPlayer.options.loop) { + $(this).unbind(".jPlayerRepeat").bind($.jPlayer.event.ended + ".jPlayer.jPlayerRepeat", function() { + $(this).jPlayer("play"); + }); + } else { + $(this).unbind(".jPlayerRepeat"); + } + }, + nativeVideoControls: { + // Works well on standard browsers. + // Phone and tablet browsers can have problems with the controls disappearing. + }, + noFullWindow: { + msie: /msie [0-6]\./, + ipad: /ipad.*?os [0-4]\./, + iphone: /iphone/, + ipod: /ipod/, + android_pad: /android [0-3]\.(?!.*?mobile)/, + android_phone: /(?=.*android)(?!.*chrome)(?=.*mobile)/, + blackberry: /blackberry/, + windows_ce: /windows ce/, + iemobile: /iemobile/, + webos: /webos/ + }, + noVolume: { + ipad: /ipad/, + iphone: /iphone/, + ipod: /ipod/, + android_pad: /android(?!.*?mobile)/, + android_phone: /android.*?mobile/, + blackberry: /blackberry/, + windows_ce: /windows ce/, + iemobile: /iemobile/, + webos: /webos/, + playbook: /playbook/ + }, + timeFormat: { + // Specific time format for this instance. The supported options are defined in $.jPlayer.timeFormat + // For the undefined options we use the default from $.jPlayer.timeFormat + }, + keyEnabled: false, // Enables keyboard controls. + audioFullScreen: false, // Enables keyboard controls to enter full screen with audio media. + keyBindings: { // The key control object, defining the key codes and the functions to execute. + // The parameter, f = $.jPlayer.focus, will be checked truethy before attempting to call any of these functions. + // Properties may be added to this object, in key/fn pairs, to enable other key controls. EG, for the playlist add-on. + play: { + key: 80, // p + fn: function(f) { + if(f.status.paused) { + f.play(); + } else { + f.pause(); + } + } + }, + fullScreen: { + key: 70, // f + fn: function(f) { + if(f.status.video || f.options.audioFullScreen) { + f._setOption("fullScreen", !f.options.fullScreen); + } + } + }, + muted: { + key: 77, // m + fn: function(f) { + f._muted(!f.options.muted); + } + }, + volumeUp: { + key: 190, // . + fn: function(f) { + f.volume(f.options.volume + 0.1); + } + }, + volumeDown: { + key: 188, // , + fn: function(f) { + f.volume(f.options.volume - 0.1); + } + }, + loop: { + key: 76, // l + fn: function(f) { + f._loop(!f.options.loop); + } + } + }, + verticalVolume: false, // Calculate volume from the bottom of the volume bar. Default is from the left. Also volume affects either width or height. + verticalPlaybackRate: false, + globalVolume: false, // Set to make volume and muted changes affect all jPlayer instances with this option enabled + idPrefix: "jp", // Prefix for the ids of html elements created by jPlayer. For flash, this must not include characters: . - + * / \ + noConflict: "jQuery", + emulateHtml: false, // Emulates the HTML5 Media element on the jPlayer element. + consoleAlerts: true, // Alerts are sent to the console.log() instead of alert(). + errorAlerts: false, + warningAlerts: false + }, + optionsAudio: { + size: { + width: "0px", + height: "0px", + cssClass: "" + }, + sizeFull: { + width: "0px", + height: "0px", + cssClass: "" + } + }, + optionsVideo: { + size: { + width: "480px", + height: "270px", + cssClass: "jp-video-270p" + }, + sizeFull: { + width: "100%", + height: "100%", + cssClass: "jp-video-full" + } + }, + instances: {}, // Static Object + status: { // Instanced in _init() + src: "", + media: {}, + paused: true, + format: {}, + formatType: "", + waitForPlay: true, // Same as waitForLoad except in case where preloading. + waitForLoad: true, + srcSet: false, + video: false, // True if playing a video + seekPercent: 0, + currentPercentRelative: 0, + currentPercentAbsolute: 0, + currentTime: 0, + duration: 0, + remaining: 0, + videoWidth: 0, // Intrinsic width of the video in pixels. + videoHeight: 0, // Intrinsic height of the video in pixels. + readyState: 0, + networkState: 0, + playbackRate: 1, // Warning - Now both an option and a status property + ended: 0 + +/* Persistant status properties created dynamically at _init(): + width + height + cssClass + nativeVideoControls + noFullWindow + noVolume + playbackRateEnabled // Warning - Technically, we can have both Flash and HTML, so this might not be correct if the Flash is active. That is a niche case. +*/ + }, + + internal: { // Instanced in _init() + ready: false + // instance: undefined + // domNode: undefined + // htmlDlyCmdId: undefined + // autohideId: undefined + // mouse: undefined + // cmdsIgnored + }, + solution: { // Static Object: Defines the solutions built in jPlayer. + html: true, + aurora: true, + flash: true + }, + // 'MPEG-4 support' : canPlayType('video/mp4; codecs="mp4v.20.8"') + format: { // Static Object + mp3: { + codec: 'audio/mpeg', + flashCanPlay: true, + media: 'audio' + }, + m4a: { // AAC / MP4 + codec: 'audio/mp4; codecs="mp4a.40.2"', + flashCanPlay: true, + media: 'audio' + }, + m3u8a: { // AAC / MP4 / Apple HLS + codec: 'application/vnd.apple.mpegurl; codecs="mp4a.40.2"', + flashCanPlay: false, + media: 'audio' + }, + m3ua: { // M3U + codec: 'audio/mpegurl', + flashCanPlay: false, + media: 'audio' + }, + oga: { // OGG + codec: 'audio/ogg; codecs="vorbis, opus"', + flashCanPlay: false, + media: 'audio' + }, + flac: { // FLAC + codec: 'audio/x-flac', + flashCanPlay: false, + media: 'audio' + }, + wav: { // PCM + codec: 'audio/wav; codecs="1"', + flashCanPlay: false, + media: 'audio' + }, + webma: { // WEBM + codec: 'audio/webm; codecs="vorbis"', + flashCanPlay: false, + media: 'audio' + }, + fla: { // FLV / F4A + codec: 'audio/x-flv', + flashCanPlay: true, + media: 'audio' + }, + rtmpa: { // RTMP AUDIO + codec: 'audio/rtmp; codecs="rtmp"', + flashCanPlay: true, + media: 'audio' + }, + m4v: { // H.264 / MP4 + codec: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', + flashCanPlay: true, + media: 'video' + }, + m3u8v: { // H.264 / AAC / MP4 / Apple HLS + codec: 'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"', + flashCanPlay: false, + media: 'video' + }, + m3uv: { // M3U + codec: 'audio/mpegurl', + flashCanPlay: false, + media: 'video' + }, + ogv: { // OGG + codec: 'video/ogg; codecs="theora, vorbis"', + flashCanPlay: false, + media: 'video' + }, + webmv: { // WEBM + codec: 'video/webm; codecs="vorbis, vp8"', + flashCanPlay: false, + media: 'video' + }, + flv: { // FLV / F4V + codec: 'video/x-flv', + flashCanPlay: true, + media: 'video' + }, + rtmpv: { // RTMP VIDEO + codec: 'video/rtmp; codecs="rtmp"', + flashCanPlay: true, + media: 'video' + } + }, + _init: function() { + var self = this; + + this.element.empty(); + + this.status = $.extend({}, this.status); // Copy static to unique instance. + this.internal = $.extend({}, this.internal); // Copy static to unique instance. + + // Initialize the time format + this.options.timeFormat = $.extend({}, $.jPlayer.timeFormat, this.options.timeFormat); + + // On iOS, assume commands will be ignored before user initiates them. + this.internal.cmdsIgnored = $.jPlayer.platform.ipad || $.jPlayer.platform.iphone || $.jPlayer.platform.ipod; + + this.internal.domNode = this.element.get(0); + + // Add key bindings focus to 1st jPlayer instanced with key control enabled. + if(this.options.keyEnabled && !$.jPlayer.focus) { + $.jPlayer.focus = this; + } + + // A fix for Android where older (2.3) and even some 4.x devices fail to work when changing the *audio* SRC and then playing immediately. + this.androidFix = { + setMedia: false, // True when media set + play: false, // True when a progress event will instruct the media to play + pause: false, // True when a progress event will instruct the media to pause at a time. + time: NaN // The play(time) parameter + }; + if($.jPlayer.platform.android) { + this.options.preload = this.options.preload !== 'auto' ? 'metadata' : 'auto'; // Default to metadata, but allow auto. + } + + this.formats = []; // Array based on supplied string option. Order defines priority. + this.solutions = []; // Array based on solution string option. Order defines priority. + this.require = {}; // Which media types are required: video, audio. + + this.htmlElement = {}; // DOM elements created by jPlayer + this.html = {}; // In _init()'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array. + this.html.audio = {}; + this.html.video = {}; + this.aurora = {}; // In _init()'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array. + this.aurora.formats = []; + this.aurora.properties = []; + this.flash = {}; // In _init()'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array. + + this.css = {}; + this.css.cs = {}; // Holds the css selector strings + this.css.jq = {}; // Holds jQuery selectors. ie., $(css.cs.method) + + this.ancestorJq = []; // Holds jQuery selector of cssSelectorAncestor. Init would use $() instead of [], but it is only 1.4+ + + this.options.volume = this._limitValue(this.options.volume, 0, 1); // Limit volume value's bounds. + + // Create the formats array, with prority based on the order of the supplied formats string + $.each(this.options.supplied.toLowerCase().split(","), function(index1, value1) { + var format = value1.replace(/^\s+|\s+$/g, ""); //trim + if(self.format[format]) { // Check format is valid. + var dupFound = false; + $.each(self.formats, function(index2, value2) { // Check for duplicates + if(format === value2) { + dupFound = true; + return false; + } + }); + if(!dupFound) { + self.formats.push(format); + } + } + }); + + // Create the solutions array, with prority based on the order of the solution string + $.each(this.options.solution.toLowerCase().split(","), function(index1, value1) { + var solution = value1.replace(/^\s+|\s+$/g, ""); //trim + if(self.solution[solution]) { // Check solution is valid. + var dupFound = false; + $.each(self.solutions, function(index2, value2) { // Check for duplicates + if(solution === value2) { + dupFound = true; + return false; + } + }); + if(!dupFound) { + self.solutions.push(solution); + } + } + }); + + // Create Aurora.js formats array + $.each(this.options.auroraFormats.toLowerCase().split(","), function(index1, value1) { + var format = value1.replace(/^\s+|\s+$/g, ""); //trim + if(self.format[format]) { // Check format is valid. + var dupFound = false; + $.each(self.aurora.formats, function(index2, value2) { // Check for duplicates + if(format === value2) { + dupFound = true; + return false; + } + }); + if(!dupFound) { + self.aurora.formats.push(format); + } + } + }); + + this.internal.instance = "jp_" + this.count; + this.instances[this.internal.instance] = this.element; + + // Check the jPlayer div has an id and create one if required. Important for Flash to know the unique id for comms. + if(!this.element.attr("id")) { + this.element.attr("id", this.options.idPrefix + "_jplayer_" + this.count); + } + + this.internal.self = $.extend({}, { + id: this.element.attr("id"), + jq: this.element + }); + this.internal.audio = $.extend({}, { + id: this.options.idPrefix + "_audio_" + this.count, + jq: undefined + }); + this.internal.video = $.extend({}, { + id: this.options.idPrefix + "_video_" + this.count, + jq: undefined + }); + this.internal.flash = $.extend({}, { + id: this.options.idPrefix + "_flash_" + this.count, + jq: undefined, + swf: this.options.swfPath + (this.options.swfPath.toLowerCase().slice(-4) !== ".swf" ? (this.options.swfPath && this.options.swfPath.slice(-1) !== "/" ? "/" : "") + "jquery.jplayer.swf" : "") + }); + this.internal.poster = $.extend({}, { + id: this.options.idPrefix + "_poster_" + this.count, + jq: undefined + }); + + // Register listeners defined in the constructor + $.each($.jPlayer.event, function(eventName,eventType) { + if(self.options[eventName] !== undefined) { + self.element.bind(eventType + ".jPlayer", self.options[eventName]); // With .jPlayer namespace. + self.options[eventName] = undefined; // Destroy the handler pointer copy on the options. Reason, events can be added/removed in other ways so this could be obsolete and misleading. + } + }); + + // Determine if we require solutions for audio, video or both media types. + this.require.audio = false; + this.require.video = false; + $.each(this.formats, function(priority, format) { + self.require[self.format[format].media] = true; + }); + + // Now required types are known, finish the options default settings. + if(this.require.video) { + this.options = $.extend(true, {}, + this.optionsVideo, + this.options + ); + } else { + this.options = $.extend(true, {}, + this.optionsAudio, + this.options + ); + } + this._setSize(); // update status and jPlayer element size + + // Determine the status for Blocklisted options. + this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); + this.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow); + this.status.noVolume = this._uaBlocklist(this.options.noVolume); + + // Create event handlers if native fullscreen is supported + if($.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled) { + this._fullscreenAddEventListeners(); + } + + // The native controls are only for video and are disabled when audio is also used. + this._restrictNativeVideoControls(); + + // Create the poster image. + this.htmlElement.poster = document.createElement('img'); + this.htmlElement.poster.id = this.internal.poster.id; + this.htmlElement.poster.onload = function() { // Note that this did not work on Firefox 3.6: poster.addEventListener("onload", function() {}, false); Did not investigate x-browser. + if(!self.status.video || self.status.waitForPlay) { + self.internal.poster.jq.show(); + } + }; + this.element.append(this.htmlElement.poster); + this.internal.poster.jq = $("#" + this.internal.poster.id); + this.internal.poster.jq.css({'width': this.status.width, 'height': this.status.height}); + this.internal.poster.jq.hide(); + this.internal.poster.jq.bind("click.jPlayer", function() { + self._trigger($.jPlayer.event.click); + }); + + // Generate the required media elements + this.html.audio.available = false; + if(this.require.audio) { // If a supplied format is audio + this.htmlElement.audio = document.createElement('audio'); + this.htmlElement.audio.id = this.internal.audio.id; + this.html.audio.available = !!this.htmlElement.audio.canPlayType && this._testCanPlayType(this.htmlElement.audio); // Test is for IE9 on Win Server 2008. + } + this.html.video.available = false; + if(this.require.video) { // If a supplied format is video + this.htmlElement.video = document.createElement('video'); + this.htmlElement.video.id = this.internal.video.id; + this.html.video.available = !!this.htmlElement.video.canPlayType && this._testCanPlayType(this.htmlElement.video); // Test is for IE9 on Win Server 2008. + } + + this.flash.available = this._checkForFlash(10.1); + + this.html.canPlay = {}; + this.aurora.canPlay = {}; + this.flash.canPlay = {}; + $.each(this.formats, function(priority, format) { + self.html.canPlay[format] = self.html[self.format[format].media].available && "" !== self.htmlElement[self.format[format].media].canPlayType(self.format[format].codec); + self.aurora.canPlay[format] = ($.inArray(format, self.aurora.formats) > -1); + self.flash.canPlay[format] = self.format[format].flashCanPlay && self.flash.available; + }); + this.html.desired = false; + this.aurora.desired = false; + this.flash.desired = false; + $.each(this.solutions, function(solutionPriority, solution) { + if(solutionPriority === 0) { + self[solution].desired = true; + } else { + var audioCanPlay = false; + var videoCanPlay = false; + $.each(self.formats, function(formatPriority, format) { + if(self[self.solutions[0]].canPlay[format]) { // The other solution can play + if(self.format[format].media === 'video') { + videoCanPlay = true; + } else { + audioCanPlay = true; + } + } + }); + self[solution].desired = (self.require.audio && !audioCanPlay) || (self.require.video && !videoCanPlay); + } + }); + // This is what jPlayer will support, based on solution and supplied. + this.html.support = {}; + this.aurora.support = {}; + this.flash.support = {}; + $.each(this.formats, function(priority, format) { + self.html.support[format] = self.html.canPlay[format] && self.html.desired; + self.aurora.support[format] = self.aurora.canPlay[format] && self.aurora.desired; + self.flash.support[format] = self.flash.canPlay[format] && self.flash.desired; + }); + // If jPlayer is supporting any format in a solution, then the solution is used. + this.html.used = false; + this.aurora.used = false; + this.flash.used = false; + $.each(this.solutions, function(solutionPriority, solution) { + $.each(self.formats, function(formatPriority, format) { + if(self[solution].support[format]) { + self[solution].used = true; + return false; + } + }); + }); + + // Init solution active state and the event gates to false. + this._resetActive(); + this._resetGate(); + + // Set up the css selectors for the control and feedback entities. + this._cssSelectorAncestor(this.options.cssSelectorAncestor); + + // If neither html nor aurora nor flash are being used by this browser, then media playback is not possible. Trigger an error event. + if(!(this.html.used || this.aurora.used || this.flash.used)) { + this._error( { + type: $.jPlayer.error.NO_SOLUTION, + context: "{solution:'" + this.options.solution + "', supplied:'" + this.options.supplied + "'}", + message: $.jPlayer.errorMsg.NO_SOLUTION, + hint: $.jPlayer.errorHint.NO_SOLUTION + }); + if(this.css.jq.noSolution.length) { + this.css.jq.noSolution.show(); + } + } else { + if(this.css.jq.noSolution.length) { + this.css.jq.noSolution.hide(); + } + } + + // Add the flash solution if it is being used. + if(this.flash.used) { + var htmlObj, + flashVars = 'jQuery=' + encodeURI(this.options.noConflict) + '&id=' + encodeURI(this.internal.self.id) + '&vol=' + this.options.volume + '&muted=' + this.options.muted; + + // Code influenced by SWFObject 2.2: http://code.google.com/p/swfobject/ + // Non IE browsers have an initial Flash size of 1 by 1 otherwise the wmode affected the Flash ready event. + + if($.jPlayer.browser.msie && (Number($.jPlayer.browser.version) < 9 || $.jPlayer.browser.documentMode < 9)) { + var objStr = ''; + + var paramStr = [ + '', + '', + '', + '', + '' + ]; + + htmlObj = document.createElement(objStr); + for(var i=0; i < paramStr.length; i++) { + htmlObj.appendChild(document.createElement(paramStr[i])); + } + } else { + var createParam = function(el, n, v) { + var p = document.createElement("param"); + p.setAttribute("name", n); + p.setAttribute("value", v); + el.appendChild(p); + }; + + htmlObj = document.createElement("object"); + htmlObj.setAttribute("id", this.internal.flash.id); + htmlObj.setAttribute("name", this.internal.flash.id); + htmlObj.setAttribute("data", this.internal.flash.swf); + htmlObj.setAttribute("type", "application/x-shockwave-flash"); + htmlObj.setAttribute("width", "1"); // Non-zero + htmlObj.setAttribute("height", "1"); // Non-zero + htmlObj.setAttribute("tabindex", "-1"); + createParam(htmlObj, "flashvars", flashVars); + createParam(htmlObj, "allowscriptaccess", "always"); + createParam(htmlObj, "bgcolor", this.options.backgroundColor); + createParam(htmlObj, "wmode", this.options.wmode); + } + + this.element.append(htmlObj); + this.internal.flash.jq = $(htmlObj); + } + + // Setup playbackRate ability before using _addHtmlEventListeners() + if(this.html.used && !this.flash.used) { // If only HTML + // Using the audio element capabilities for playbackRate. ie., Assuming video element is the same. + this.status.playbackRateEnabled = this._testPlaybackRate('audio'); + } else { + this.status.playbackRateEnabled = false; + } + + this._updatePlaybackRate(); + + // Add the HTML solution if being used. + if(this.html.used) { + + // The HTML Audio handlers + if(this.html.audio.available) { + this._addHtmlEventListeners(this.htmlElement.audio, this.html.audio); + this.element.append(this.htmlElement.audio); + this.internal.audio.jq = $("#" + this.internal.audio.id); + } + + // The HTML Video handlers + if(this.html.video.available) { + this._addHtmlEventListeners(this.htmlElement.video, this.html.video); + this.element.append(this.htmlElement.video); + this.internal.video.jq = $("#" + this.internal.video.id); + if(this.status.nativeVideoControls) { + this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); + } else { + this.internal.video.jq.css({'width':'0px', 'height':'0px'}); // Using size 0x0 since a .hide() causes issues in iOS + } + this.internal.video.jq.bind("click.jPlayer", function() { + self._trigger($.jPlayer.event.click); + }); + } + } + + // Add the Aurora.js solution if being used. + if(this.aurora.used) { + // Aurora.js player need to be created for each media, see setMedia function. + } + + // Create the bridge that emulates the HTML Media element on the jPlayer DIV + if( this.options.emulateHtml ) { + this._emulateHtmlBridge(); + } + + if((this.html.used || this.aurora.used) && !this.flash.used) { // If only HTML, then emulate flash ready() call after 100ms. + setTimeout( function() { + self.internal.ready = true; + self.version.flash = "n/a"; + self._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option. + self._trigger($.jPlayer.event.ready); + }, 100); + } + + // Initialize the interface components with the options. + this._updateNativeVideoControls(); + // The other controls are now setup in _cssSelectorAncestor() + if(this.css.jq.videoPlay.length) { + this.css.jq.videoPlay.hide(); + } + + $.jPlayer.prototype.count++; // Change static variable via prototype. + }, + destroy: function() { + // MJP: The background change remains. Would need to store the original to restore it correctly. + // MJP: The jPlayer element's size change remains. + + // Clear the media to reset the GUI and stop any downloads. Streams on some browsers had persited. (Chrome) + this.clearMedia(); + // Remove the size/sizeFull cssClass from the cssSelectorAncestor + this._removeUiClass(); + // Remove the times from the GUI + if(this.css.jq.currentTime.length) { + this.css.jq.currentTime.text(""); + } + if(this.css.jq.duration.length) { + this.css.jq.duration.text(""); + } + // Remove any bindings from the interface controls. + $.each(this.css.jq, function(fn, jq) { + // Check selector is valid before trying to execute method. + if(jq.length) { + jq.unbind(".jPlayer"); + } + }); + // Remove the click handlers for $.jPlayer.event.click + this.internal.poster.jq.unbind(".jPlayer"); + if(this.internal.video.jq) { + this.internal.video.jq.unbind(".jPlayer"); + } + // Remove the fullscreen event handlers + this._fullscreenRemoveEventListeners(); + // Remove key bindings + if(this === $.jPlayer.focus) { + $.jPlayer.focus = null; + } + // Destroy the HTML bridge. + if(this.options.emulateHtml) { + this._destroyHtmlBridge(); + } + this.element.removeData("jPlayer"); // Remove jPlayer data + this.element.unbind(".jPlayer"); // Remove all event handlers created by the jPlayer constructor + this.element.empty(); // Remove the inserted child elements + + delete this.instances[this.internal.instance]; // Clear the instance on the static instance object + }, + destroyRemoved: function() { // Destroy any instances that have gone away. + var self = this; + $.each(this.instances, function(i, element) { + if(self.element !== element) { // Do not destroy this instance. + if(!element.data("jPlayer")) { // Check that element is a real jPlayer. + element.jPlayer("destroy"); + delete self.instances[i]; + } + } + }); + }, + enable: function() { // Plan to implement + // options.disabled = false + }, + disable: function () { // Plan to implement + // options.disabled = true + }, + _testCanPlayType: function(elem) { + // IE9 on Win Server 2008 did not implement canPlayType(), but it has the property. + try { + elem.canPlayType(this.format.mp3.codec); // The type is irrelevant. + return true; + } catch(err) { + return false; + } + }, + _testPlaybackRate: function(type) { + // type: String 'audio' or 'video' + var el, rate = 0.5; + type = typeof type === 'string' ? type : 'audio'; + el = document.createElement(type); + // Wrapping in a try/catch, just in case older HTML5 browsers throw and error. + try { + if('playbackRate' in el) { + el.playbackRate = rate; + return el.playbackRate === rate; + } else { + return false; + } + } catch(err) { + return false; + } + }, + _uaBlocklist: function(list) { + // list : object with properties that are all regular expressions. Property names are irrelevant. + // Returns true if the user agent is matched in list. + var ua = navigator.userAgent.toLowerCase(), + block = false; + + $.each(list, function(p, re) { + if(re && re.test(ua)) { + block = true; + return false; // exit $.each. + } + }); + return block; + }, + _restrictNativeVideoControls: function() { + // Fallback to noFullWindow when nativeVideoControls is true and audio media is being used. Affects when both media types are used. + if(this.require.audio) { + if(this.status.nativeVideoControls) { + this.status.nativeVideoControls = false; + this.status.noFullWindow = true; + } + } + }, + _updateNativeVideoControls: function() { + if(this.html.video.available && this.html.used) { + // Turn the HTML Video controls on/off + this.htmlElement.video.controls = this.status.nativeVideoControls; + // Show/hide the jPlayer GUI. + this._updateAutohide(); + // For when option changed. The poster image is not updated, as it is dealt with in setMedia(). Acceptable degradation since seriously doubt these options will change on the fly. Can again review later. + if(this.status.nativeVideoControls && this.require.video) { + this.internal.poster.jq.hide(); + this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); + } else if(this.status.waitForPlay && this.status.video) { + this.internal.poster.jq.show(); + this.internal.video.jq.css({'width': '0px', 'height': '0px'}); + } + } + }, + _addHtmlEventListeners: function(mediaElement, entity) { + var self = this; + mediaElement.preload = this.options.preload; + mediaElement.muted = this.options.muted; + mediaElement.volume = this.options.volume; + + if(this.status.playbackRateEnabled) { + mediaElement.defaultPlaybackRate = this.options.defaultPlaybackRate; + mediaElement.playbackRate = this.options.playbackRate; + } + + // Create the event listeners + // Only want the active entity to affect jPlayer and bubble events. + // Using entity.gate so that object is referenced and gate property always current + + mediaElement.addEventListener("progress", function() { + if(entity.gate) { + if(self.internal.cmdsIgnored && this.readyState > 0) { // Detect iOS executed the command + self.internal.cmdsIgnored = false; + } + self._getHtmlStatus(mediaElement); + self._updateInterface(); + self._trigger($.jPlayer.event.progress); + } + }, false); + mediaElement.addEventListener("loadeddata", function() { + if(entity.gate) { + self.androidFix.setMedia = false; // Disable the fix after the first progress event. + if(self.androidFix.play) { // Play Android audio - performing the fix. + self.androidFix.play = false; + self.play(self.androidFix.time); + } + if(self.androidFix.pause) { // Pause Android audio at time - performing the fix. + self.androidFix.pause = false; + self.pause(self.androidFix.time); + } + self._trigger($.jPlayer.event.loadeddata); + } + }, false); + mediaElement.addEventListener("timeupdate", function() { + if(entity.gate) { + self._getHtmlStatus(mediaElement); + self._updateInterface(); + self._trigger($.jPlayer.event.timeupdate); + } + }, false); + mediaElement.addEventListener("durationchange", function() { + if(entity.gate) { + self._getHtmlStatus(mediaElement); + self._updateInterface(); + self._trigger($.jPlayer.event.durationchange); + } + }, false); + mediaElement.addEventListener("play", function() { + if(entity.gate) { + self._updateButtons(true); + self._html_checkWaitForPlay(); // So the native controls update this variable and puts the hidden interface in the correct state. Affects toggling native controls. + self._trigger($.jPlayer.event.play); + } + }, false); + mediaElement.addEventListener("playing", function() { + if(entity.gate) { + self._updateButtons(true); + self._seeked(); + self._trigger($.jPlayer.event.playing); + } + }, false); + mediaElement.addEventListener("pause", function() { + if(entity.gate) { + self._updateButtons(false); + self._trigger($.jPlayer.event.pause); + } + }, false); + mediaElement.addEventListener("waiting", function() { + if(entity.gate) { + self._seeking(); + self._trigger($.jPlayer.event.waiting); + } + }, false); + mediaElement.addEventListener("seeking", function() { + if(entity.gate) { + self._seeking(); + self._trigger($.jPlayer.event.seeking); + } + }, false); + mediaElement.addEventListener("seeked", function() { + if(entity.gate) { + self._seeked(); + self._trigger($.jPlayer.event.seeked); + } + }, false); + mediaElement.addEventListener("volumechange", function() { + if(entity.gate) { + // Read the values back from the element as the Blackberry PlayBook shares the volume with the physical buttons master volume control. + // However, when tested 6th July 2011, those buttons do not generate an event. The physical play/pause button does though. + self.options.volume = mediaElement.volume; + self.options.muted = mediaElement.muted; + self._updateMute(); + self._updateVolume(); + self._trigger($.jPlayer.event.volumechange); + } + }, false); + mediaElement.addEventListener("ratechange", function() { + if(entity.gate) { + self.options.defaultPlaybackRate = mediaElement.defaultPlaybackRate; + self.options.playbackRate = mediaElement.playbackRate; + self._updatePlaybackRate(); + self._trigger($.jPlayer.event.ratechange); + } + }, false); + mediaElement.addEventListener("suspend", function() { // Seems to be the only way of capturing that the iOS4 browser did not actually play the media from the page code. ie., It needs a user gesture. + if(entity.gate) { + self._seeked(); + self._trigger($.jPlayer.event.suspend); + } + }, false); + mediaElement.addEventListener("ended", function() { + if(entity.gate) { + // Order of the next few commands are important. Change the time and then pause. + // Solves a bug in Firefox, where issuing pause 1st causes the media to play from the start. ie., The pause is ignored. + if(!$.jPlayer.browser.webkit) { // Chrome crashes if you do this in conjunction with a setMedia command in an ended event handler. ie., The playlist demo. + self.htmlElement.media.currentTime = 0; // Safari does not care about this command. ie., It works with or without this line. (Both Safari and Chrome are Webkit.) + } + self.htmlElement.media.pause(); // Pause otherwise a click on the progress bar will play from that point, when it shouldn't, since it stopped playback. + self._updateButtons(false); + self._getHtmlStatus(mediaElement, true); // With override true. Otherwise Chrome leaves progress at full. + self._updateInterface(); + self._trigger($.jPlayer.event.ended); + } + }, false); + mediaElement.addEventListener("error", function() { + if(entity.gate) { + self._updateButtons(false); + self._seeked(); + if(self.status.srcSet) { // Deals with case of clearMedia() causing an error event. + clearTimeout(self.internal.htmlDlyCmdId); // Clears any delayed commands used in the HTML solution. + self.status.waitForLoad = true; // Allows the load operation to try again. + self.status.waitForPlay = true; // Reset since a play was captured. + if(self.status.video && !self.status.nativeVideoControls) { + self.internal.video.jq.css({'width':'0px', 'height':'0px'}); + } + if(self._validString(self.status.media.poster) && !self.status.nativeVideoControls) { + self.internal.poster.jq.show(); + } + if(self.css.jq.videoPlay.length) { + self.css.jq.videoPlay.show(); + } + self._error( { + type: $.jPlayer.error.URL, + context: self.status.src, // this.src shows absolute urls. Want context to show the url given. + message: $.jPlayer.errorMsg.URL, + hint: $.jPlayer.errorHint.URL + }); + } + } + }, false); + // Create all the other event listeners that bubble up to a jPlayer event from html, without being used by jPlayer. + $.each($.jPlayer.htmlEvent, function(i, eventType) { + mediaElement.addEventListener(this, function() { + if(entity.gate) { + self._trigger($.jPlayer.event[eventType]); + } + }, false); + }); + }, + _addAuroraEventListeners : function(player, entity) { + var self = this; + //player.preload = this.options.preload; + //player.muted = this.options.muted; + player.volume = this.options.volume * 100; + + // Create the event listeners + // Only want the active entity to affect jPlayer and bubble events. + // Using entity.gate so that object is referenced and gate property always current + + player.on("progress", function() { + if(entity.gate) { + if(self.internal.cmdsIgnored && this.readyState > 0) { // Detect iOS executed the command + self.internal.cmdsIgnored = false; + } + self._getAuroraStatus(player); + self._updateInterface(); + self._trigger($.jPlayer.event.progress); + // Progress with song duration, we estimate timeupdate need to be triggered too. + if (player.duration > 0) { + self._trigger($.jPlayer.event.timeupdate); + } + } + }, false); + player.on("ready", function() { + if(entity.gate) { + self._trigger($.jPlayer.event.loadeddata); + } + }, false); + player.on("duration", function() { + if(entity.gate) { + self._getAuroraStatus(player); + self._updateInterface(); + self._trigger($.jPlayer.event.durationchange); + } + }, false); + player.on("end", function() { + if(entity.gate) { + // Order of the next few commands are important. Change the time and then pause. + self._updateButtons(false); + self._getAuroraStatus(player, true); + self._updateInterface(); + self._trigger($.jPlayer.event.ended); + } + }, false); + player.on("error", function() { + if(entity.gate) { + self._updateButtons(false); + self._seeked(); + if(self.status.srcSet) { // Deals with case of clearMedia() causing an error event. + self.status.waitForLoad = true; // Allows the load operation to try again. + self.status.waitForPlay = true; // Reset since a play was captured. + if(self.status.video && !self.status.nativeVideoControls) { + self.internal.video.jq.css({'width':'0px', 'height':'0px'}); + } + if(self._validString(self.status.media.poster) && !self.status.nativeVideoControls) { + self.internal.poster.jq.show(); + } + if(self.css.jq.videoPlay.length) { + self.css.jq.videoPlay.show(); + } + self._error( { + type: $.jPlayer.error.URL, + context: self.status.src, // this.src shows absolute urls. Want context to show the url given. + message: $.jPlayer.errorMsg.URL, + hint: $.jPlayer.errorHint.URL + }); + } + } + }, false); + }, + _getHtmlStatus: function(media, override) { + var ct = 0, cpa = 0, sp = 0, cpr = 0; + + // Fixes the duration bug in iOS, where the durationchange event occurs when media.duration is not always correct. + // Fixes the initial duration bug in BB OS7, where the media.duration is infinity and displays as NaN:NaN due to Date() using inifity. + if(isFinite(media.duration)) { + this.status.duration = media.duration; + } + + ct = media.currentTime; + cpa = (this.status.duration > 0) ? 100 * ct / this.status.duration : 0; + if((typeof media.seekable === "object") && (media.seekable.length > 0)) { + sp = (this.status.duration > 0) ? 100 * media.seekable.end(media.seekable.length-1) / this.status.duration : 100; + cpr = (this.status.duration > 0) ? 100 * media.currentTime / media.seekable.end(media.seekable.length-1) : 0; // Duration conditional for iOS duration bug. ie., seekable.end is a NaN in that case. + } else { + sp = 100; + cpr = cpa; + } + + if(override) { + ct = 0; + cpr = 0; + cpa = 0; + } + + this.status.seekPercent = sp; + this.status.currentPercentRelative = cpr; + this.status.currentPercentAbsolute = cpa; + this.status.currentTime = ct; + + this.status.remaining = this.status.duration - this.status.currentTime; + + this.status.videoWidth = media.videoWidth; + this.status.videoHeight = media.videoHeight; + + this.status.readyState = media.readyState; + this.status.networkState = media.networkState; + this.status.playbackRate = media.playbackRate; + this.status.ended = media.ended; + }, + _getAuroraStatus: function(player, override) { + var ct = 0, cpa = 0, sp = 0, cpr = 0; + + this.status.duration = player.duration / 1000; + + ct = player.currentTime / 1000; + cpa = (this.status.duration > 0) ? 100 * ct / this.status.duration : 0; + if(player.buffered > 0) { + sp = (this.status.duration > 0) ? (player.buffered * this.status.duration) / this.status.duration : 100; + cpr = (this.status.duration > 0) ? ct / (player.buffered * this.status.duration) : 0; + } else { + sp = 100; + cpr = cpa; + } + + if(override) { + ct = 0; + cpr = 0; + cpa = 0; + } + + this.status.seekPercent = sp; + this.status.currentPercentRelative = cpr; + this.status.currentPercentAbsolute = cpa; + this.status.currentTime = ct; + + this.status.remaining = this.status.duration - this.status.currentTime; + + this.status.readyState = 4; // status.readyState; + this.status.networkState = 0; // status.networkState; + this.status.playbackRate = 1; // status.playbackRate; + this.status.ended = false; // status.ended; + }, + _resetStatus: function() { + this.status = $.extend({}, this.status, $.jPlayer.prototype.status); // Maintains the status properties that persist through a reset. + }, + _trigger: function(eventType, error, warning) { // eventType always valid as called using $.jPlayer.event.eventType + var event = $.Event(eventType); + event.jPlayer = {}; + event.jPlayer.version = $.extend({}, this.version); + event.jPlayer.options = $.extend(true, {}, this.options); // Deep copy + event.jPlayer.status = $.extend(true, {}, this.status); // Deep copy + event.jPlayer.html = $.extend(true, {}, this.html); // Deep copy + event.jPlayer.aurora = $.extend(true, {}, this.aurora); // Deep copy + event.jPlayer.flash = $.extend(true, {}, this.flash); // Deep copy + if(error) { + event.jPlayer.error = $.extend({}, error); + } + if(warning) { + event.jPlayer.warning = $.extend({}, warning); + } + this.element.trigger(event); + }, + jPlayerFlashEvent: function(eventType, status) { // Called from Flash + if(eventType === $.jPlayer.event.ready) { + if(!this.internal.ready) { + this.internal.ready = true; + this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); // Once Flash generates the ready event, minimise to zero as it is not affected by wmode anymore. + + this.version.flash = status.version; + if(this.version.needFlash !== this.version.flash) { + this._error( { + type: $.jPlayer.error.VERSION, + context: this.version.flash, + message: $.jPlayer.errorMsg.VERSION + this.version.flash, + hint: $.jPlayer.errorHint.VERSION + }); + } + this._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option. + this._trigger(eventType); + } else { + // This condition occurs if the Flash is hidden and then shown again. + // Firefox also reloads the Flash if the CSS position changes. position:fixed is used for full screen. + + // Only do this if the Flash is the solution being used at the moment. Affects Media players where both solution may be being used. + if(this.flash.gate) { + + // Send the current status to the Flash now that it is ready (available) again. + if(this.status.srcSet) { + + // Need to read original status before issuing the setMedia command. + var currentTime = this.status.currentTime, + paused = this.status.paused; + + this.setMedia(this.status.media); + this.volumeWorker(this.options.volume); + if(currentTime > 0) { + if(paused) { + this.pause(currentTime); + } else { + this.play(currentTime); + } + } + } + this._trigger($.jPlayer.event.flashreset); + } + } + } + if(this.flash.gate) { + switch(eventType) { + case $.jPlayer.event.progress: + this._getFlashStatus(status); + this._updateInterface(); + this._trigger(eventType); + break; + case $.jPlayer.event.timeupdate: + this._getFlashStatus(status); + this._updateInterface(); + this._trigger(eventType); + break; + case $.jPlayer.event.play: + this._seeked(); + this._updateButtons(true); + this._trigger(eventType); + break; + case $.jPlayer.event.pause: + this._updateButtons(false); + this._trigger(eventType); + break; + case $.jPlayer.event.ended: + this._updateButtons(false); + this._trigger(eventType); + break; + case $.jPlayer.event.click: + this._trigger(eventType); // This could be dealt with by the default + break; + case $.jPlayer.event.error: + this.status.waitForLoad = true; // Allows the load operation to try again. + this.status.waitForPlay = true; // Reset since a play was captured. + if(this.status.video) { + this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); + } + if(this._validString(this.status.media.poster)) { + this.internal.poster.jq.show(); + } + if(this.css.jq.videoPlay.length && this.status.video) { + this.css.jq.videoPlay.show(); + } + if(this.status.video) { // Set up for another try. Execute before error event. + this._flash_setVideo(this.status.media); + } else { + this._flash_setAudio(this.status.media); + } + this._updateButtons(false); + this._error( { + type: $.jPlayer.error.URL, + context:status.src, + message: $.jPlayer.errorMsg.URL, + hint: $.jPlayer.errorHint.URL + }); + break; + case $.jPlayer.event.seeking: + this._seeking(); + this._trigger(eventType); + break; + case $.jPlayer.event.seeked: + this._seeked(); + this._trigger(eventType); + break; + case $.jPlayer.event.ready: + // The ready event is handled outside the switch statement. + // Captured here otherwise 2 ready events would be generated if the ready event handler used setMedia. + break; + default: + this._trigger(eventType); + } + } + return false; + }, + _getFlashStatus: function(status) { + this.status.seekPercent = status.seekPercent; + this.status.currentPercentRelative = status.currentPercentRelative; + this.status.currentPercentAbsolute = status.currentPercentAbsolute; + this.status.currentTime = status.currentTime; + this.status.duration = status.duration; + this.status.remaining = status.duration - status.currentTime; + + this.status.videoWidth = status.videoWidth; + this.status.videoHeight = status.videoHeight; + + // The Flash does not generate this information in this release + this.status.readyState = 4; // status.readyState; + this.status.networkState = 0; // status.networkState; + this.status.playbackRate = 1; // status.playbackRate; + this.status.ended = false; // status.ended; + }, + _updateButtons: function(playing) { + if(playing === undefined) { + playing = !this.status.paused; + } else { + this.status.paused = !playing; + } + // Apply the state classes. (For the useStateClassSkin:true option) + if(playing) { + this.addStateClass('playing'); + } else { + this.removeStateClass('playing'); + } + if(!this.status.noFullWindow && this.options.fullWindow) { + this.addStateClass('fullScreen'); + } else { + this.removeStateClass('fullScreen'); + } + if(this.options.loop) { + this.addStateClass('looped'); + } else { + this.removeStateClass('looped'); + } + // Toggle the GUI element pairs. (For the useStateClassSkin:false option) + if(this.css.jq.play.length && this.css.jq.pause.length) { + if(playing) { + this.css.jq.play.hide(); + this.css.jq.pause.show(); + } else { + this.css.jq.play.show(); + this.css.jq.pause.hide(); + } + } + if(this.css.jq.restoreScreen.length && this.css.jq.fullScreen.length) { + if(this.status.noFullWindow) { + this.css.jq.fullScreen.hide(); + this.css.jq.restoreScreen.hide(); + } else if(this.options.fullWindow) { + this.css.jq.fullScreen.hide(); + this.css.jq.restoreScreen.show(); + } else { + this.css.jq.fullScreen.show(); + this.css.jq.restoreScreen.hide(); + } + } + if(this.css.jq.repeat.length && this.css.jq.repeatOff.length) { + if(this.options.loop) { + this.css.jq.repeat.hide(); + this.css.jq.repeatOff.show(); + } else { + this.css.jq.repeat.show(); + this.css.jq.repeatOff.hide(); + } + } + }, + _updateInterface: function() { + if(this.css.jq.seekBar.length) { + this.css.jq.seekBar.width(this.status.seekPercent+"%"); + } + if(this.css.jq.playBar.length) { + if(this.options.smoothPlayBar) { + this.css.jq.playBar.stop().animate({ + width: this.status.currentPercentAbsolute+"%" + }, 250, "linear"); + } else { + this.css.jq.playBar.width(this.status.currentPercentRelative+"%"); + } + } + var currentTimeText = ''; + if(this.css.jq.currentTime.length) { + currentTimeText = this._convertTime(this.status.currentTime); + if(currentTimeText !== this.css.jq.currentTime.text()) { + this.css.jq.currentTime.text(this._convertTime(this.status.currentTime)); + } + } + var durationText = '', + duration = this.status.duration, + remaining = this.status.remaining; + if(this.css.jq.duration.length) { + if(typeof this.status.media.duration === 'string') { + durationText = this.status.media.duration; + } else { + if(typeof this.status.media.duration === 'number') { + duration = this.status.media.duration; + remaining = duration - this.status.currentTime; + } + if(this.options.remainingDuration) { + durationText = (remaining > 0 ? '-' : '') + this._convertTime(remaining); + } else { + durationText = this._convertTime(duration); + } + } + if(durationText !== this.css.jq.duration.text()) { + this.css.jq.duration.text(durationText); + } + } + }, + _convertTime: ConvertTime.prototype.time, + _seeking: function() { + if(this.css.jq.seekBar.length) { + this.css.jq.seekBar.addClass("jp-seeking-bg"); + } + this.addStateClass('seeking'); + }, + _seeked: function() { + if(this.css.jq.seekBar.length) { + this.css.jq.seekBar.removeClass("jp-seeking-bg"); + } + this.removeStateClass('seeking'); + }, + _resetGate: function() { + this.html.audio.gate = false; + this.html.video.gate = false; + this.aurora.gate = false; + this.flash.gate = false; + }, + _resetActive: function() { + this.html.active = false; + this.aurora.active = false; + this.flash.active = false; + }, + _escapeHtml: function(s) { + return s.split('&').join('&').split('<').join('<').split('>').join('>').split('"').join('"'); + }, + _qualifyURL: function(url) { + var el = document.createElement('div'); + el.innerHTML= 'x'; + return el.firstChild.href; + }, + _absoluteMediaUrls: function(media) { + var self = this; + $.each(media, function(type, url) { + if(url && self.format[type] && url.substr(0, 5) !== "data:") { + media[type] = self._qualifyURL(url); + } + }); + return media; + }, + addStateClass: function(state) { + if(this.ancestorJq.length) { + this.ancestorJq.addClass(this.options.stateClass[state]); + } + }, + removeStateClass: function(state) { + if(this.ancestorJq.length) { + this.ancestorJq.removeClass(this.options.stateClass[state]); + } + }, + setMedia: function(media) { + + /* media[format] = String: URL of format. Must contain all of the supplied option's video or audio formats. + * media.poster = String: Video poster URL. + * media.track = Array: Of objects defining the track element: kind, src, srclang, label, def. + * media.stream = Boolean: * NOT IMPLEMENTED * Designating actual media streams. ie., "false/undefined" for files. Plan to refresh the flash every so often. + */ + + var self = this, + supported = false, + posterChanged = this.status.media.poster !== media.poster; // Compare before reset. Important for OSX Safari as this.htmlElement.poster.src is absolute, even if original poster URL was relative. + + this._resetMedia(); + this._resetGate(); + this._resetActive(); + + // Clear the Android Fix. + this.androidFix.setMedia = false; + this.androidFix.play = false; + this.androidFix.pause = false; + + // Convert all media URLs to absolute URLs. + media = this._absoluteMediaUrls(media); + + $.each(this.formats, function(formatPriority, format) { + var isVideo = self.format[format].media === 'video'; + $.each(self.solutions, function(solutionPriority, solution) { + if(self[solution].support[format] && self._validString(media[format])) { // Format supported in solution and url given for format. + var isHtml = solution === 'html'; + var isAurora = solution === 'aurora'; + + if(isVideo) { + if(isHtml) { + self.html.video.gate = true; + self._html_setVideo(media); + self.html.active = true; + } else { + self.flash.gate = true; + self._flash_setVideo(media); + self.flash.active = true; + } + if(self.css.jq.videoPlay.length) { + self.css.jq.videoPlay.show(); + } + self.status.video = true; + } else { + if(isHtml) { + self.html.audio.gate = true; + self._html_setAudio(media); + self.html.active = true; + + // Setup the Android Fix - Only for HTML audio. + if($.jPlayer.platform.android) { + self.androidFix.setMedia = true; + } + } else if(isAurora) { + self.aurora.gate = true; + self._aurora_setAudio(media); + self.aurora.active = true; + } else { + self.flash.gate = true; + self._flash_setAudio(media); + self.flash.active = true; + } + if(self.css.jq.videoPlay.length) { + self.css.jq.videoPlay.hide(); + } + self.status.video = false; + } + + supported = true; + return false; // Exit $.each + } + }); + if(supported) { + return false; // Exit $.each + } + }); + + if(supported) { + if(!(this.status.nativeVideoControls && this.html.video.gate)) { + // Set poster IMG if native video controls are not being used + // Note: With IE the IMG onload event occurs immediately when cached. + // Note: Poster hidden by default in _resetMedia() + if(this._validString(media.poster)) { + if(posterChanged) { // Since some browsers do not generate img onload event. + this.htmlElement.poster.src = media.poster; + } else { + this.internal.poster.jq.show(); + } + } + } + if(typeof media.title === 'string') { + if(this.css.jq.title.length) { + this.css.jq.title.html(media.title); + } + if(this.htmlElement.audio) { + this.htmlElement.audio.setAttribute('title', media.title); + } + if(this.htmlElement.video) { + this.htmlElement.video.setAttribute('title', media.title); + } + } + this.status.srcSet = true; + this.status.media = $.extend({}, media); + this._updateButtons(false); + this._updateInterface(); + this._trigger($.jPlayer.event.setmedia); + } else { // jPlayer cannot support any formats provided in this browser + // Send an error event + this._error( { + type: $.jPlayer.error.NO_SUPPORT, + context: "{supplied:'" + this.options.supplied + "'}", + message: $.jPlayer.errorMsg.NO_SUPPORT, + hint: $.jPlayer.errorHint.NO_SUPPORT + }); + } + }, + _resetMedia: function() { + this._resetStatus(); + this._updateButtons(false); + this._updateInterface(); + this._seeked(); + this.internal.poster.jq.hide(); + + clearTimeout(this.internal.htmlDlyCmdId); + + if(this.html.active) { + this._html_resetMedia(); + } else if(this.aurora.active) { + this._aurora_resetMedia(); + } else if(this.flash.active) { + this._flash_resetMedia(); + } + }, + clearMedia: function() { + this._resetMedia(); + + if(this.html.active) { + this._html_clearMedia(); + } else if(this.aurora.active) { + this._aurora_clearMedia(); + } else if(this.flash.active) { + this._flash_clearMedia(); + } + + this._resetGate(); + this._resetActive(); + }, + load: function() { + if(this.status.srcSet) { + if(this.html.active) { + this._html_load(); + } else if(this.aurora.active) { + this._aurora_load(); + } else if(this.flash.active) { + this._flash_load(); + } + } else { + this._urlNotSetError("load"); + } + }, + focus: function() { + if(this.options.keyEnabled) { + $.jPlayer.focus = this; + } + }, + play: function(time) { + var guiAction = typeof time === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. + if(guiAction && this.options.useStateClassSkin && !this.status.paused) { + this.pause(time); // The time would be the click event, but passing it over so info is not lost. + } else { + time = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler + if(this.status.srcSet) { + this.focus(); + if(this.html.active) { + this._html_play(time); + } else if(this.aurora.active) { + this._aurora_play(time); + } else if(this.flash.active) { + this._flash_play(time); + } + } else { + this._urlNotSetError("play"); + } + } + }, + videoPlay: function() { // Handles clicks on the play button over the video poster + this.play(); + }, + pause: function(time) { + time = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler + if(this.status.srcSet) { + if(this.html.active) { + this._html_pause(time); + } else if(this.aurora.active) { + this._aurora_pause(time); + } else if(this.flash.active) { + this._flash_pause(time); + } + } else { + this._urlNotSetError("pause"); + } + }, + tellOthers: function(command, conditions) { + var self = this, + hasConditions = typeof conditions === 'function', + args = Array.prototype.slice.call(arguments); // Convert arguments to an Array. + + if(typeof command !== 'string') { // Ignore, since no command. + return; // Return undefined to maintain chaining. + } + if(hasConditions) { + args.splice(1, 1); // Remove the conditions from the arguments + } + + $.jPlayer.prototype.destroyRemoved(); + $.each(this.instances, function() { + // Remember that "this" is the instance's "element" in the $.each() loop. + if(self.element !== this) { // Do not tell my instance. + if(!hasConditions || conditions.call(this.data("jPlayer"), self)) { + this.jPlayer.apply(this, args); + } + } + }); + }, + pauseOthers: function(time) { + this.tellOthers("pause", function() { + // In the conditions function, the "this" context is the other instance's jPlayer object. + return this.status.srcSet; + }, time); + }, + stop: function() { + if(this.status.srcSet) { + if(this.html.active) { + this._html_pause(0); + } else if(this.aurora.active) { + this._aurora_pause(0); + } else if(this.flash.active) { + this._flash_pause(0); + } + } else { + this._urlNotSetError("stop"); + } + }, + playHead: function(p) { + p = this._limitValue(p, 0, 100); + if(this.status.srcSet) { + if(this.html.active) { + this._html_playHead(p); + } else if(this.aurora.active) { + this._aurora_playHead(p); + } else if(this.flash.active) { + this._flash_playHead(p); + } + } else { + this._urlNotSetError("playHead"); + } + }, + _muted: function(muted) { + this.mutedWorker(muted); + if(this.options.globalVolume) { + this.tellOthers("mutedWorker", function() { + // Check the other instance has global volume enabled. + return this.options.globalVolume; + }, muted); + } + }, + mutedWorker: function(muted) { + this.options.muted = muted; + if(this.html.used) { + this._html_setProperty('muted', muted); + } + if(this.aurora.used) { + this._aurora_mute(muted); + } + if(this.flash.used) { + this._flash_mute(muted); + } + + // The HTML solution generates this event from the media element itself. + if(!this.html.video.gate && !this.html.audio.gate) { + this._updateMute(muted); + this._updateVolume(this.options.volume); + this._trigger($.jPlayer.event.volumechange); + } + }, + mute: function(mute) { // mute is either: undefined (true), an event object (true) or a boolean (muted). + var guiAction = typeof mute === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. + if(guiAction && this.options.useStateClassSkin && this.options.muted) { + this._muted(false); + } else { + mute = mute === undefined ? true : !!mute; + this._muted(mute); + } + }, + unmute: function(unmute) { // unmute is either: undefined (true), an event object (true) or a boolean (!muted). + unmute = unmute === undefined ? true : !!unmute; + this._muted(!unmute); + }, + _updateMute: function(mute) { + if(mute === undefined) { + mute = this.options.muted; + } + if(mute) { + this.addStateClass('muted'); + } else { + this.removeStateClass('muted'); + } + if(this.css.jq.mute.length && this.css.jq.unmute.length) { + if(this.status.noVolume) { + this.css.jq.mute.hide(); + this.css.jq.unmute.hide(); + } else if(mute) { + this.css.jq.mute.hide(); + this.css.jq.unmute.show(); + } else { + this.css.jq.mute.show(); + this.css.jq.unmute.hide(); + } + } + }, + volume: function(v) { + this.volumeWorker(v); + if(this.options.globalVolume) { + this.tellOthers("volumeWorker", function() { + // Check the other instance has global volume enabled. + return this.options.globalVolume; + }, v); + } + }, + volumeWorker: function(v) { + v = this._limitValue(v, 0, 1); + this.options.volume = v; + + if(this.html.used) { + this._html_setProperty('volume', v); + } + if(this.aurora.used) { + this._aurora_volume(v); + } + if(this.flash.used) { + this._flash_volume(v); + } + + // The HTML solution generates this event from the media element itself. + if(!this.html.video.gate && !this.html.audio.gate) { + this._updateVolume(v); + this._trigger($.jPlayer.event.volumechange); + } + }, + volumeBar: function(e) { // Handles clicks on the volumeBar + if(this.css.jq.volumeBar.length) { + // Using $(e.currentTarget) to enable multiple volume bars + var $bar = $(e.currentTarget), + offset = $bar.offset(), + x = e.pageX - offset.left, + w = $bar.width(), + y = $bar.height() - e.pageY + offset.top, + h = $bar.height(); + if(this.options.verticalVolume) { + this.volume(y/h); + } else { + this.volume(x/w); + } + } + if(this.options.muted) { + this._muted(false); + } + }, + _updateVolume: function(v) { + if(v === undefined) { + v = this.options.volume; + } + v = this.options.muted ? 0 : v; + + if(this.status.noVolume) { + this.addStateClass('noVolume'); + if(this.css.jq.volumeBar.length) { + this.css.jq.volumeBar.hide(); + } + if(this.css.jq.volumeBarValue.length) { + this.css.jq.volumeBarValue.hide(); + } + if(this.css.jq.volumeMax.length) { + this.css.jq.volumeMax.hide(); + } + } else { + this.removeStateClass('noVolume'); + if(this.css.jq.volumeBar.length) { + this.css.jq.volumeBar.show(); + } + if(this.css.jq.volumeBarValue.length) { + this.css.jq.volumeBarValue.show(); + this.css.jq.volumeBarValue[this.options.verticalVolume ? "height" : "width"]((v*100)+"%"); + } + if(this.css.jq.volumeMax.length) { + this.css.jq.volumeMax.show(); + } + } + }, + volumeMax: function() { // Handles clicks on the volume max + this.volume(1); + if(this.options.muted) { + this._muted(false); + } + }, + _cssSelectorAncestor: function(ancestor) { + var self = this; + this.options.cssSelectorAncestor = ancestor; + this._removeUiClass(); + this.ancestorJq = ancestor ? $(ancestor) : []; // Would use $() instead of [], but it is only 1.4+ + if(ancestor && this.ancestorJq.length !== 1) { // So empty strings do not generate the warning. + this._warning( { + type: $.jPlayer.warning.CSS_SELECTOR_COUNT, + context: ancestor, + message: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.ancestorJq.length + " found for cssSelectorAncestor.", + hint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT + }); + } + this._addUiClass(); + $.each(this.options.cssSelector, function(fn, cssSel) { + self._cssSelector(fn, cssSel); + }); + + // Set the GUI to the current state. + this._updateInterface(); + this._updateButtons(); + this._updateAutohide(); + this._updateVolume(); + this._updateMute(); + }, + _cssSelector: function(fn, cssSel) { + var self = this; + if(typeof cssSel === 'string') { + if($.jPlayer.prototype.options.cssSelector[fn]) { + if(this.css.jq[fn] && this.css.jq[fn].length) { + this.css.jq[fn].unbind(".jPlayer"); + } + this.options.cssSelector[fn] = cssSel; + this.css.cs[fn] = this.options.cssSelectorAncestor + " " + cssSel; + + if(cssSel) { // Checks for empty string + this.css.jq[fn] = $(this.css.cs[fn]); + } else { + this.css.jq[fn] = []; // To comply with the css.jq[fn].length check before its use. As of jQuery 1.4 could have used $() for an empty set. + } + + if(this.css.jq[fn].length && this[fn]) { + var handler = function(e) { + e.preventDefault(); + self[fn](e); + if(self.options.autoBlur) { + $(this).blur(); + } else { + $(this).focus(); // Force focus for ARIA. + } + }; + this.css.jq[fn].bind("click.jPlayer", handler); // Using jPlayer namespace + } + + if(cssSel && this.css.jq[fn].length !== 1) { // So empty strings do not generate the warning. ie., they just remove the old one. + this._warning( { + type: $.jPlayer.warning.CSS_SELECTOR_COUNT, + context: this.css.cs[fn], + message: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.css.jq[fn].length + " found for " + fn + " method.", + hint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT + }); + } + } else { + this._warning( { + type: $.jPlayer.warning.CSS_SELECTOR_METHOD, + context: fn, + message: $.jPlayer.warningMsg.CSS_SELECTOR_METHOD, + hint: $.jPlayer.warningHint.CSS_SELECTOR_METHOD + }); + } + } else { + this._warning( { + type: $.jPlayer.warning.CSS_SELECTOR_STRING, + context: cssSel, + message: $.jPlayer.warningMsg.CSS_SELECTOR_STRING, + hint: $.jPlayer.warningHint.CSS_SELECTOR_STRING + }); + } + }, + duration: function(e) { + if(this.options.toggleDuration) { + if(this.options.captureDuration) { + e.stopPropagation(); + } + this._setOption("remainingDuration", !this.options.remainingDuration); + } + }, + seekBar: function(e) { // Handles clicks on the seekBar + if(this.css.jq.seekBar.length) { + // Using $(e.currentTarget) to enable multiple seek bars + var $bar = $(e.currentTarget), + offset = $bar.offset(), + x = e.pageX - offset.left, + w = $bar.width(), + p = 100 * x / w; + this.playHead(p); + } + }, + playbackRate: function(pbr) { + this._setOption("playbackRate", pbr); + }, + playbackRateBar: function(e) { // Handles clicks on the playbackRateBar + if(this.css.jq.playbackRateBar.length) { + // Using $(e.currentTarget) to enable multiple playbackRate bars + var $bar = $(e.currentTarget), + offset = $bar.offset(), + x = e.pageX - offset.left, + w = $bar.width(), + y = $bar.height() - e.pageY + offset.top, + h = $bar.height(), + ratio, pbr; + if(this.options.verticalPlaybackRate) { + ratio = y/h; + } else { + ratio = x/w; + } + pbr = ratio * (this.options.maxPlaybackRate - this.options.minPlaybackRate) + this.options.minPlaybackRate; + this.playbackRate(pbr); + } + }, + _updatePlaybackRate: function() { + var pbr = this.options.playbackRate, + ratio = (pbr - this.options.minPlaybackRate) / (this.options.maxPlaybackRate - this.options.minPlaybackRate); + if(this.status.playbackRateEnabled) { + if(this.css.jq.playbackRateBar.length) { + this.css.jq.playbackRateBar.show(); + } + if(this.css.jq.playbackRateBarValue.length) { + this.css.jq.playbackRateBarValue.show(); + this.css.jq.playbackRateBarValue[this.options.verticalPlaybackRate ? "height" : "width"]((ratio*100)+"%"); + } + } else { + if(this.css.jq.playbackRateBar.length) { + this.css.jq.playbackRateBar.hide(); + } + if(this.css.jq.playbackRateBarValue.length) { + this.css.jq.playbackRateBarValue.hide(); + } + } + }, + repeat: function(event) { // Handle clicks on the repeat button + var guiAction = typeof event === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. + if(guiAction && this.options.useStateClassSkin && this.options.loop) { + this._loop(false); + } else { + this._loop(true); + } + }, + repeatOff: function() { // Handle clicks on the repeatOff button + this._loop(false); + }, + _loop: function(loop) { + if(this.options.loop !== loop) { + this.options.loop = loop; + this._updateButtons(); + this._trigger($.jPlayer.event.repeat); + } + }, + + // Options code adapted from ui.widget.js (1.8.7). Made changes so the key can use dot notation. To match previous getData solution in jPlayer 1. + option: function(key, value) { + var options = key; + + // Enables use: options(). Returns a copy of options object + if ( arguments.length === 0 ) { + return $.extend( true, {}, this.options ); + } + + if(typeof key === "string") { + var keys = key.split("."); + + // Enables use: options("someOption") Returns a copy of the option. Supports dot notation. + if(value === undefined) { + + var opt = $.extend(true, {}, this.options); + for(var i = 0; i < keys.length; i++) { + if(opt[keys[i]] !== undefined) { + opt = opt[keys[i]]; + } else { + this._warning( { + type: $.jPlayer.warning.OPTION_KEY, + context: key, + message: $.jPlayer.warningMsg.OPTION_KEY, + hint: $.jPlayer.warningHint.OPTION_KEY + }); + return undefined; + } + } + return opt; + } + + // Enables use: options("someOptionObject", someObject}). Creates: {someOptionObject:someObject} + // Enables use: options("someOption", someValue). Creates: {someOption:someValue} + // Enables use: options("someOptionObject.someOption", someValue). Creates: {someOptionObject:{someOption:someValue}} + + options = {}; + var opts = options; + + for(var j = 0; j < keys.length; j++) { + if(j < keys.length - 1) { + opts[keys[j]] = {}; + opts = opts[keys[j]]; + } else { + opts[keys[j]] = value; + } + } + } + + // Otherwise enables use: options(optionObject). Uses original object (the key) + + this._setOptions(options); + + return this; + }, + _setOptions: function(options) { + var self = this; + $.each(options, function(key, value) { // This supports the 2 level depth that the options of jPlayer has. Would review if we ever need more depth. + self._setOption(key, value); + }); + + return this; + }, + _setOption: function(key, value) { + var self = this; + + // The ability to set options is limited at this time. + + switch(key) { + case "volume" : + this.volume(value); + break; + case "muted" : + this._muted(value); + break; + case "globalVolume" : + this.options[key] = value; + break; + case "cssSelectorAncestor" : + this._cssSelectorAncestor(value); // Set and refresh all associations for the new ancestor. + break; + case "cssSelector" : + $.each(value, function(fn, cssSel) { + self._cssSelector(fn, cssSel); // NB: The option is set inside this function, after further validity checks. + }); + break; + case "playbackRate" : + this.options[key] = value = this._limitValue(value, this.options.minPlaybackRate, this.options.maxPlaybackRate); + if(this.html.used) { + this._html_setProperty('playbackRate', value); + } + this._updatePlaybackRate(); + break; + case "defaultPlaybackRate" : + this.options[key] = value = this._limitValue(value, this.options.minPlaybackRate, this.options.maxPlaybackRate); + if(this.html.used) { + this._html_setProperty('defaultPlaybackRate', value); + } + this._updatePlaybackRate(); + break; + case "minPlaybackRate" : + this.options[key] = value = this._limitValue(value, 0.1, this.options.maxPlaybackRate - 0.1); + this._updatePlaybackRate(); + break; + case "maxPlaybackRate" : + this.options[key] = value = this._limitValue(value, this.options.minPlaybackRate + 0.1, 16); + this._updatePlaybackRate(); + break; + case "fullScreen" : + if(this.options[key] !== value) { // if changed + var wkv = $.jPlayer.nativeFeatures.fullscreen.used.webkitVideo; + if(!wkv || wkv && !this.status.waitForPlay) { + if(!wkv) { // No sensible way to unset option on these devices. + this.options[key] = value; + } + if(value) { + this._requestFullscreen(); + } else { + this._exitFullscreen(); + } + if(!wkv) { + this._setOption("fullWindow", value); + } + } + } + break; + case "fullWindow" : + if(this.options[key] !== value) { // if changed + this._removeUiClass(); + this.options[key] = value; + this._refreshSize(); + } + break; + case "size" : + if(!this.options.fullWindow && this.options[key].cssClass !== value.cssClass) { + this._removeUiClass(); + } + this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. + this._refreshSize(); + break; + case "sizeFull" : + if(this.options.fullWindow && this.options[key].cssClass !== value.cssClass) { + this._removeUiClass(); + } + this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. + this._refreshSize(); + break; + case "autohide" : + this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. + this._updateAutohide(); + break; + case "loop" : + this._loop(value); + break; + case "remainingDuration" : + this.options[key] = value; + this._updateInterface(); + break; + case "toggleDuration" : + this.options[key] = value; + break; + case "nativeVideoControls" : + this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. + this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); + this._restrictNativeVideoControls(); + this._updateNativeVideoControls(); + break; + case "noFullWindow" : + this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. + this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); // Need to check again as noFullWindow can depend on this flag and the restrict() can override it. + this.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow); + this._restrictNativeVideoControls(); + this._updateButtons(); + break; + case "noVolume" : + this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. + this.status.noVolume = this._uaBlocklist(this.options.noVolume); + this._updateVolume(); + this._updateMute(); + break; + case "emulateHtml" : + if(this.options[key] !== value) { // To avoid multiple event handlers being created, if true already. + this.options[key] = value; + if(value) { + this._emulateHtmlBridge(); + } else { + this._destroyHtmlBridge(); + } + } + break; + case "timeFormat" : + this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. + break; + case "keyEnabled" : + this.options[key] = value; + if(!value && this === $.jPlayer.focus) { + $.jPlayer.focus = null; + } + break; + case "keyBindings" : + this.options[key] = $.extend(true, {}, this.options[key], value); // store a merged DEEP copy of it, incase not all properties changed. + break; + case "audioFullScreen" : + this.options[key] = value; + break; + case "autoBlur" : + this.options[key] = value; + break; + } + + return this; + }, + // End of: (Options code adapted from ui.widget.js) + + _refreshSize: function() { + this._setSize(); // update status and jPlayer element size + this._addUiClass(); // update the ui class + this._updateSize(); // update internal sizes + this._updateButtons(); + this._updateAutohide(); + this._trigger($.jPlayer.event.resize); + }, + _setSize: function() { + // Determine the current size from the options + if(this.options.fullWindow) { + this.status.width = this.options.sizeFull.width; + this.status.height = this.options.sizeFull.height; + this.status.cssClass = this.options.sizeFull.cssClass; + } else { + this.status.width = this.options.size.width; + this.status.height = this.options.size.height; + this.status.cssClass = this.options.size.cssClass; + } + + // Set the size of the jPlayer area. + this.element.css({'width': this.status.width, 'height': this.status.height}); + }, + _addUiClass: function() { + if(this.ancestorJq.length) { + this.ancestorJq.addClass(this.status.cssClass); + } + }, + _removeUiClass: function() { + if(this.ancestorJq.length) { + this.ancestorJq.removeClass(this.status.cssClass); + } + }, + _updateSize: function() { + // The poster uses show/hide so can simply resize it. + this.internal.poster.jq.css({'width': this.status.width, 'height': this.status.height}); + + // Video html or flash resized if necessary at this time, or if native video controls being used. + if(!this.status.waitForPlay && this.html.active && this.status.video || this.html.video.available && this.html.used && this.status.nativeVideoControls) { + this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); + } + else if(!this.status.waitForPlay && this.flash.active && this.status.video) { + this.internal.flash.jq.css({'width': this.status.width, 'height': this.status.height}); + } + }, + _updateAutohide: function() { + var self = this, + event = "mousemove.jPlayer", + namespace = ".jPlayerAutohide", + eventType = event + namespace, + handler = function(event) { + var moved = false, + deltaX, deltaY; + if(typeof self.internal.mouse !== "undefined") { + //get the change from last position to this position + deltaX = self.internal.mouse.x - event.pageX; + deltaY = self.internal.mouse.y - event.pageY; + moved = (Math.floor(deltaX) > 0) || (Math.floor(deltaY)>0); + } else { + moved = true; + } + // store current position for next method execution + self.internal.mouse = { + x : event.pageX, + y : event.pageY + }; + // if mouse has been actually moved, do the gui fadeIn/fadeOut + if (moved) { + self.css.jq.gui.fadeIn(self.options.autohide.fadeIn, function() { + clearTimeout(self.internal.autohideId); + self.internal.autohideId = setTimeout( function() { + self.css.jq.gui.fadeOut(self.options.autohide.fadeOut); + }, self.options.autohide.hold); + }); + } + }; + + if(this.css.jq.gui.length) { + + // End animations first so that its callback is executed now. + // Otherwise an in progress fadeIn animation still has the callback to fadeOut again. + this.css.jq.gui.stop(true, true); + + // Removes the fadeOut operation from the fadeIn callback. + clearTimeout(this.internal.autohideId); + // undefine mouse + delete this.internal.mouse; + + this.element.unbind(namespace); + this.css.jq.gui.unbind(namespace); + + if(!this.status.nativeVideoControls) { + if(this.options.fullWindow && this.options.autohide.full || !this.options.fullWindow && this.options.autohide.restored) { + this.element.bind(eventType, handler); + this.css.jq.gui.bind(eventType, handler); + this.css.jq.gui.hide(); + } else { + this.css.jq.gui.show(); + } + } else { + this.css.jq.gui.hide(); + } + } + }, + fullScreen: function(event) { + var guiAction = typeof event === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. + if(guiAction && this.options.useStateClassSkin && this.options.fullScreen) { + this._setOption("fullScreen", false); + } else { + this._setOption("fullScreen", true); + } + }, + restoreScreen: function() { + this._setOption("fullScreen", false); + }, + _fullscreenAddEventListeners: function() { + var self = this, + fs = $.jPlayer.nativeFeatures.fullscreen; + + if(fs.api.fullscreenEnabled) { + if(fs.event.fullscreenchange) { + // Create the event handler function and store it for removal. + if(typeof this.internal.fullscreenchangeHandler !== 'function') { + this.internal.fullscreenchangeHandler = function() { + self._fullscreenchange(); + }; + } + document.addEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false); + } + // No point creating handler for fullscreenerror. + // Either logic avoids fullscreen occurring (w3c/moz), or their is no event on the browser (webkit). + } + }, + _fullscreenRemoveEventListeners: function() { + var fs = $.jPlayer.nativeFeatures.fullscreen; + if(this.internal.fullscreenchangeHandler) { + document.removeEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false); + } + }, + _fullscreenchange: function() { + // If nothing is fullscreen, then we cannot be in fullscreen mode. + if(this.options.fullScreen && !$.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()) { + this._setOption("fullScreen", false); + } + }, + _requestFullscreen: function() { + // Either the container or the jPlayer div + var e = this.ancestorJq.length ? this.ancestorJq[0] : this.element[0], + fs = $.jPlayer.nativeFeatures.fullscreen; + + // This method needs the video element. For iOS and Android. + if(fs.used.webkitVideo) { + e = this.htmlElement.video; + } + + if(fs.api.fullscreenEnabled) { + fs.api.requestFullscreen(e); + } + }, + _exitFullscreen: function() { + + var fs = $.jPlayer.nativeFeatures.fullscreen, + e; + + // This method needs the video element. For iOS and Android. + if(fs.used.webkitVideo) { + e = this.htmlElement.video; + } + + if(fs.api.fullscreenEnabled) { + fs.api.exitFullscreen(e); + } + }, + _html_initMedia: function(media) { + // Remove any existing track elements + var $media = $(this.htmlElement.media).empty(); + + // Create any track elements given with the media, as an Array of track Objects. + $.each(media.track || [], function(i,v) { + var track = document.createElement('track'); + track.setAttribute("kind", v.kind ? v.kind : ""); + track.setAttribute("src", v.src ? v.src : ""); + track.setAttribute("srclang", v.srclang ? v.srclang : ""); + track.setAttribute("label", v.label ? v.label : ""); + if(v.def) { + track.setAttribute("default", v.def); + } + $media.append(track); + }); + + this.htmlElement.media.src = this.status.src; + + if(this.options.preload !== 'none') { + this._html_load(); // See function for comments + } + this._trigger($.jPlayer.event.timeupdate); // The flash generates this event for its solution. + }, + _html_setFormat: function(media) { + var self = this; + // Always finds a format due to checks in setMedia() + $.each(this.formats, function(priority, format) { + if(self.html.support[format] && media[format]) { + self.status.src = media[format]; + self.status.format[format] = true; + self.status.formatType = format; + return false; + } + }); + }, + _html_setAudio: function(media) { + this._html_setFormat(media); + this.htmlElement.media = this.htmlElement.audio; + this._html_initMedia(media); + }, + _html_setVideo: function(media) { + this._html_setFormat(media); + if(this.status.nativeVideoControls) { + this.htmlElement.video.poster = this._validString(media.poster) ? media.poster : ""; + } + this.htmlElement.media = this.htmlElement.video; + this._html_initMedia(media); + }, + _html_resetMedia: function() { + if(this.htmlElement.media) { + if(this.htmlElement.media.id === this.internal.video.id && !this.status.nativeVideoControls) { + this.internal.video.jq.css({'width':'0px', 'height':'0px'}); + } + this.htmlElement.media.pause(); + } + }, + _html_clearMedia: function() { + if(this.htmlElement.media) { + this.htmlElement.media.src = "about:blank"; + // The following load() is only required for Firefox 3.6 (PowerMacs). + // Recent HTMl5 browsers only require the src change. Due to changes in W3C spec and load() effect. + this.htmlElement.media.load(); // Stops an old, "in progress" download from continuing the download. Triggers the loadstart, error and emptied events, due to the empty src. Also an abort event if a download was in progress. + } + }, + _html_load: function() { + // This function remains to allow the early HTML5 browsers to work, such as Firefox 3.6 + // A change in the W3C spec for the media.load() command means that this is no longer necessary. + // This command should be removed and actually causes minor undesirable effects on some browsers. Such as loading the whole file and not only the metadata. + if(this.status.waitForLoad) { + this.status.waitForLoad = false; + this.htmlElement.media.load(); + } + clearTimeout(this.internal.htmlDlyCmdId); + }, + _html_play: function(time) { + var self = this, + media = this.htmlElement.media; + + this.androidFix.pause = false; // Cancel the pause fix. + + this._html_load(); // Loads if required and clears any delayed commands. + + // Setup the Android Fix. + if(this.androidFix.setMedia) { + this.androidFix.play = true; + this.androidFix.time = time; + + } else if(!isNaN(time)) { + + // Attempt to play it, since iOS has been ignoring commands + if(this.internal.cmdsIgnored) { + media.play(); + } + + try { + // !media.seekable is for old HTML5 browsers, like Firefox 3.6. + // Checking seekable.length is important for iOS6 to work with setMedia().play(time) + if(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) { + media.currentTime = time; + media.play(); + } else { + throw 1; + } + } catch(err) { + this.internal.htmlDlyCmdId = setTimeout(function() { + self.play(time); + }, 250); + return; // Cancel execution and wait for the delayed command. + } + } else { + media.play(); + } + this._html_checkWaitForPlay(); + }, + _html_pause: function(time) { + var self = this, + media = this.htmlElement.media; + + this.androidFix.play = false; // Cancel the play fix. + + if(time > 0) { // We do not want the stop() command, which does pause(0), causing a load operation. + this._html_load(); // Loads if required and clears any delayed commands. + } else { + clearTimeout(this.internal.htmlDlyCmdId); + } + + // Order of these commands is important for Safari (Win) and IE9. Pause then change currentTime. + media.pause(); + + // Setup the Android Fix. + if(this.androidFix.setMedia) { + this.androidFix.pause = true; + this.androidFix.time = time; + + } else if(!isNaN(time)) { + try { + if(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) { + media.currentTime = time; + } else { + throw 1; + } + } catch(err) { + this.internal.htmlDlyCmdId = setTimeout(function() { + self.pause(time); + }, 250); + return; // Cancel execution and wait for the delayed command. + } + } + if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. + this._html_checkWaitForPlay(); + } + }, + _html_playHead: function(percent) { + var self = this, + media = this.htmlElement.media; + + this._html_load(); // Loads if required and clears any delayed commands. + + // This playHead() method needs a refactor to apply the android fix. + + try { + if(typeof media.seekable === "object" && media.seekable.length > 0) { + media.currentTime = percent * media.seekable.end(media.seekable.length-1) / 100; + } else if(media.duration > 0 && !isNaN(media.duration)) { + media.currentTime = percent * media.duration / 100; + } else { + throw "e"; + } + } catch(err) { + this.internal.htmlDlyCmdId = setTimeout(function() { + self.playHead(percent); + }, 250); + return; // Cancel execution and wait for the delayed command. + } + if(!this.status.waitForLoad) { + this._html_checkWaitForPlay(); + } + }, + _html_checkWaitForPlay: function() { + if(this.status.waitForPlay) { + this.status.waitForPlay = false; + if(this.css.jq.videoPlay.length) { + this.css.jq.videoPlay.hide(); + } + if(this.status.video) { + this.internal.poster.jq.hide(); + this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); + } + } + }, + _html_setProperty: function(property, value) { + if(this.html.audio.available) { + this.htmlElement.audio[property] = value; + } + if(this.html.video.available) { + this.htmlElement.video[property] = value; + } + }, + _aurora_setAudio: function(media) { + var self = this; + + // Always finds a format due to checks in setMedia() + $.each(this.formats, function(priority, format) { + if(self.aurora.support[format] && media[format]) { + self.status.src = media[format]; + self.status.format[format] = true; + self.status.formatType = format; + + return false; + } + }); + + this.aurora.player = new AV.Player.fromURL(this.status.src); + this._addAuroraEventListeners(this.aurora.player, this.aurora); + + if(this.options.preload === 'auto') { + this._aurora_load(); + this.status.waitForLoad = false; + } + }, + _aurora_resetMedia: function() { + if (this.aurora.player) { + this.aurora.player.stop(); + } + }, + _aurora_clearMedia: function() { + // Nothing to clear. + }, + _aurora_load: function() { + if(this.status.waitForLoad) { + this.status.waitForLoad = false; + this.aurora.player.preload(); + } + }, + _aurora_play: function(time) { + if (!this.status.waitForLoad) { + if (!isNaN(time)) { + this.aurora.player.seek(time); + } + } + if (!this.aurora.player.playing) { + this.aurora.player.play(); + } + this.status.waitForLoad = false; + this._aurora_checkWaitForPlay(); + + // No event from the player, update UI now. + this._updateButtons(true); + this._trigger($.jPlayer.event.play); + }, + _aurora_pause: function(time) { + if (!isNaN(time)) { + this.aurora.player.seek(time * 1000); + } + this.aurora.player.pause(); + + if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. + this._aurora_checkWaitForPlay(); + } + + // No event from the player, update UI now. + this._updateButtons(false); + this._trigger($.jPlayer.event.pause); + }, + _aurora_playHead: function(percent) { + if(this.aurora.player.duration > 0) { + // The seek() sould be in milliseconds, but the only codec that works with seek (aac.js) uses seconds. + this.aurora.player.seek(percent * this.aurora.player.duration / 100); // Using seconds + } + + if(!this.status.waitForLoad) { + this._aurora_checkWaitForPlay(); + } + }, + _aurora_checkWaitForPlay: function() { + if(this.status.waitForPlay) { + this.status.waitForPlay = false; + } + }, + _aurora_volume: function(v) { + this.aurora.player.volume = v * 100; + }, + _aurora_mute: function(m) { + if (m) { + this.aurora.properties.lastvolume = this.aurora.player.volume; + this.aurora.player.volume = 0; + } else { + this.aurora.player.volume = this.aurora.properties.lastvolume; + } + this.aurora.properties.muted = m; + }, + _flash_setAudio: function(media) { + var self = this; + try { + // Always finds a format due to checks in setMedia() + $.each(this.formats, function(priority, format) { + if(self.flash.support[format] && media[format]) { + switch (format) { + case "m4a" : + case "fla" : + self._getMovie().fl_setAudio_m4a(media[format]); + break; + case "mp3" : + self._getMovie().fl_setAudio_mp3(media[format]); + break; + case "rtmpa": + self._getMovie().fl_setAudio_rtmp(media[format]); + break; + } + self.status.src = media[format]; + self.status.format[format] = true; + self.status.formatType = format; + return false; + } + }); + + if(this.options.preload === 'auto') { + this._flash_load(); + this.status.waitForLoad = false; + } + } catch(err) { this._flashError(err); } + }, + _flash_setVideo: function(media) { + var self = this; + try { + // Always finds a format due to checks in setMedia() + $.each(this.formats, function(priority, format) { + if(self.flash.support[format] && media[format]) { + switch (format) { + case "m4v" : + case "flv" : + self._getMovie().fl_setVideo_m4v(media[format]); + break; + case "rtmpv": + self._getMovie().fl_setVideo_rtmp(media[format]); + break; + } + self.status.src = media[format]; + self.status.format[format] = true; + self.status.formatType = format; + return false; + } + }); + + if(this.options.preload === 'auto') { + this._flash_load(); + this.status.waitForLoad = false; + } + } catch(err) { this._flashError(err); } + }, + _flash_resetMedia: function() { + this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); // Must do via CSS as setting attr() to zero causes a jQuery error in IE. + this._flash_pause(NaN); + }, + _flash_clearMedia: function() { + try { + this._getMovie().fl_clearMedia(); + } catch(err) { this._flashError(err); } + }, + _flash_load: function() { + try { + this._getMovie().fl_load(); + } catch(err) { this._flashError(err); } + this.status.waitForLoad = false; + }, + _flash_play: function(time) { + try { + this._getMovie().fl_play(time); + } catch(err) { this._flashError(err); } + this.status.waitForLoad = false; + this._flash_checkWaitForPlay(); + }, + _flash_pause: function(time) { + try { + this._getMovie().fl_pause(time); + } catch(err) { this._flashError(err); } + if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. + this.status.waitForLoad = false; + this._flash_checkWaitForPlay(); + } + }, + _flash_playHead: function(p) { + try { + this._getMovie().fl_play_head(p); + } catch(err) { this._flashError(err); } + if(!this.status.waitForLoad) { + this._flash_checkWaitForPlay(); + } + }, + _flash_checkWaitForPlay: function() { + if(this.status.waitForPlay) { + this.status.waitForPlay = false; + if(this.css.jq.videoPlay.length) { + this.css.jq.videoPlay.hide(); + } + if(this.status.video) { + this.internal.poster.jq.hide(); + this.internal.flash.jq.css({'width': this.status.width, 'height': this.status.height}); + } + } + }, + _flash_volume: function(v) { + try { + this._getMovie().fl_volume(v); + } catch(err) { this._flashError(err); } + }, + _flash_mute: function(m) { + try { + this._getMovie().fl_mute(m); + } catch(err) { this._flashError(err); } + }, + _getMovie: function() { + return document[this.internal.flash.id]; + }, + _getFlashPluginVersion: function() { + + // _getFlashPluginVersion() code influenced by: + // - FlashReplace 1.01: http://code.google.com/p/flashreplace/ + // - SWFObject 2.2: http://code.google.com/p/swfobject/ + + var version = 0, + flash; + if(window.ActiveXObject) { + try { + flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + if (flash) { // flash will return null when ActiveX is disabled + var v = flash.GetVariable("$version"); + if(v) { + v = v.split(" ")[1].split(","); + version = parseInt(v[0], 10) + "." + parseInt(v[1], 10); + } + } + } catch(e) {} + } + else if(navigator.plugins && navigator.mimeTypes.length > 0) { + flash = navigator.plugins["Shockwave Flash"]; + if(flash) { + version = navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/, "$1"); + } + } + return version * 1; // Converts to a number + }, + _checkForFlash: function (version) { + var flashOk = false; + if(this._getFlashPluginVersion() >= version) { + flashOk = true; + } + return flashOk; + }, + _validString: function(url) { + return (url && typeof url === "string"); // Empty strings return false + }, + _limitValue: function(value, min, max) { + return (value < min) ? min : ((value > max) ? max : value); + }, + _urlNotSetError: function(context) { + this._error( { + type: $.jPlayer.error.URL_NOT_SET, + context: context, + message: $.jPlayer.errorMsg.URL_NOT_SET, + hint: $.jPlayer.errorHint.URL_NOT_SET + }); + }, + _flashError: function(error) { + var errorType; + if(!this.internal.ready) { + errorType = "FLASH"; + } else { + errorType = "FLASH_DISABLED"; + } + this._error( { + type: $.jPlayer.error[errorType], + context: this.internal.flash.swf, + message: $.jPlayer.errorMsg[errorType] + error.message, + hint: $.jPlayer.errorHint[errorType] + }); + // Allow the audio player to recover if display:none and then shown again, or with position:fixed on Firefox. + // This really only affects audio in a media player, as an audio player could easily move the jPlayer element away from such issues. + this.internal.flash.jq.css({'width':'1px', 'height':'1px'}); + }, + _error: function(error) { + this._trigger($.jPlayer.event.error, error); + if(this.options.errorAlerts) { + this._alert("Error!" + (error.message ? "\n" + error.message : "") + (error.hint ? "\n" + error.hint : "") + "\nContext: " + error.context); + } + }, + _warning: function(warning) { + this._trigger($.jPlayer.event.warning, undefined, warning); + if(this.options.warningAlerts) { + this._alert("Warning!" + (warning.message ? "\n" + warning.message : "") + (warning.hint ? "\n" + warning.hint : "") + "\nContext: " + warning.context); + } + }, + _alert: function(message) { + var msg = "jPlayer " + this.version.script + " : id='" + this.internal.self.id +"' : " + message; + if(!this.options.consoleAlerts) { + alert(msg); + } else if(window.console && window.console.log) { + window.console.log(msg); + } + }, + _emulateHtmlBridge: function() { + var self = this; + + // Emulate methods on jPlayer's DOM element. + $.each( $.jPlayer.emulateMethods.split(/\s+/g), function(i, name) { + self.internal.domNode[name] = function(arg) { + self[name](arg); + }; + + }); + + // Bubble jPlayer events to its DOM element. + $.each($.jPlayer.event, function(eventName,eventType) { + var nativeEvent = true; + $.each( $.jPlayer.reservedEvent.split(/\s+/g), function(i, name) { + if(name === eventName) { + nativeEvent = false; + return false; + } + }); + if(nativeEvent) { + self.element.bind(eventType + ".jPlayer.jPlayerHtml", function() { // With .jPlayer & .jPlayerHtml namespaces. + self._emulateHtmlUpdate(); + var domEvent = document.createEvent("Event"); + domEvent.initEvent(eventName, false, true); + self.internal.domNode.dispatchEvent(domEvent); + }); + } + // The error event would require a special case + }); + + // IE9 has a readyState property on all elements. The document should have it, but all (except media) elements inherit it in IE9. This conflicts with Popcorn, which polls the readyState. + }, + _emulateHtmlUpdate: function() { + var self = this; + + $.each( $.jPlayer.emulateStatus.split(/\s+/g), function(i, name) { + self.internal.domNode[name] = self.status[name]; + }); + $.each( $.jPlayer.emulateOptions.split(/\s+/g), function(i, name) { + self.internal.domNode[name] = self.options[name]; + }); + }, + _destroyHtmlBridge: function() { + var self = this; + + // Bridge event handlers are also removed by destroy() through .jPlayer namespace. + this.element.unbind(".jPlayerHtml"); // Remove all event handlers created by the jPlayer bridge. So you can change the emulateHtml option. + + // Remove the methods and properties + var emulated = $.jPlayer.emulateMethods + " " + $.jPlayer.emulateStatus + " " + $.jPlayer.emulateOptions; + $.each( emulated.split(/\s+/g), function(i, name) { + delete self.internal.domNode[name]; + }); + } + }; + + $.jPlayer.error = { + FLASH: "e_flash", + FLASH_DISABLED: "e_flash_disabled", + NO_SOLUTION: "e_no_solution", + NO_SUPPORT: "e_no_support", + URL: "e_url", + URL_NOT_SET: "e_url_not_set", + VERSION: "e_version" + }; + + $.jPlayer.errorMsg = { + FLASH: "jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ", // Used in: _flashError() + FLASH_DISABLED: "jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ", // Used in: _flashError() + NO_SOLUTION: "No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.", // Used in: _init() + NO_SUPPORT: "It is not possible to play any media format provided in setMedia() on this browser using your current options.", // Used in: setMedia() + URL: "Media URL could not be loaded.", // Used in: jPlayerFlashEvent() and _addHtmlEventListeners() + URL_NOT_SET: "Attempt to issue media playback commands, while no media url is set.", // Used in: load(), play(), pause(), stop() and playHead() + VERSION: "jPlayer " + $.jPlayer.prototype.version.script + " needs Jplayer.swf version " + $.jPlayer.prototype.version.needFlash + " but found " // Used in: jPlayerReady() + }; + + $.jPlayer.errorHint = { + FLASH: "Check your swfPath option and that Jplayer.swf is there.", + FLASH_DISABLED: "Check that you have not display:none; the jPlayer entity or any ancestor.", + NO_SOLUTION: "Review the jPlayer options: support and supplied.", + NO_SUPPORT: "Video or audio formats defined in the supplied option are missing.", + URL: "Check media URL is valid.", + URL_NOT_SET: "Use setMedia() to set the media URL.", + VERSION: "Update jPlayer files." + }; + + $.jPlayer.warning = { + CSS_SELECTOR_COUNT: "e_css_selector_count", + CSS_SELECTOR_METHOD: "e_css_selector_method", + CSS_SELECTOR_STRING: "e_css_selector_string", + OPTION_KEY: "e_option_key" + }; + + $.jPlayer.warningMsg = { + CSS_SELECTOR_COUNT: "The number of css selectors found did not equal one: ", + CSS_SELECTOR_METHOD: "The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.", + CSS_SELECTOR_STRING: "The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.", + OPTION_KEY: "The option requested in jPlayer('option') is undefined." + }; + + $.jPlayer.warningHint = { + CSS_SELECTOR_COUNT: "Check your css selector and the ancestor.", + CSS_SELECTOR_METHOD: "Check your method name.", + CSS_SELECTOR_STRING: "Check your css selector is a string.", + OPTION_KEY: "Check your option name." + }; +})); diff --git a/media/jplayer/jplayer/jquery.jplayer.min.js b/media/jplayer/jplayer/jquery.jplayer.min.js new file mode 100644 index 00000000..99f64d71 --- /dev/null +++ b/media/jplayer/jplayer/jquery.jplayer.min.js @@ -0,0 +1,3 @@ +/*! jPlayer 2.9.2 for jQuery ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ +!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):b("object"==typeof exports?require("jquery"):a.jQuery?a.jQuery:a.Zepto)}(this,function(a,b){a.fn.jPlayer=function(c){var d="jPlayer",e="string"==typeof c,f=Array.prototype.slice.call(arguments,1),g=this;return c=!e&&f.length?a.extend.apply(null,[!0,c].concat(f)):c,e&&"_"===c.charAt(0)?g:(this.each(e?function(){var e=a(this).data(d),h=e&&a.isFunction(e[c])?e[c].apply(e,f):e;return h!==e&&h!==b?(g=h,!1):void 0}:function(){var b=a(this).data(d);b?b.option(c||{}):a(this).data(d,new a.jPlayer(c,this))}),g)},a.jPlayer=function(b,c){if(arguments.length){this.element=a(c),this.options=a.extend(!0,{},this.options,b);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()}),this._init()}},"function"!=typeof a.fn.stop&&(a.fn.stop=function(){}),a.jPlayer.emulateMethods="load play pause",a.jPlayer.emulateStatus="src readyState networkState currentTime duration paused ended playbackRate",a.jPlayer.emulateOptions="muted volume",a.jPlayer.reservedEvent="ready flashreset resize repeat error warning",a.jPlayer.event={},a.each(["ready","setmedia","flashreset","resize","repeat","click","error","warning","loadstart","progress","suspend","abort","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],function(){a.jPlayer.event[this]="jPlayer_"+this}),a.jPlayer.htmlEvent=["loadstart","abort","emptied","stalled","loadedmetadata","canplay","canplaythrough"],a.jPlayer.pause=function(){a.jPlayer.prototype.destroyRemoved(),a.each(a.jPlayer.prototype.instances,function(a,b){b.data("jPlayer").status.srcSet&&b.jPlayer("pause")})},a.jPlayer.timeFormat={showHour:!1,showMin:!0,showSec:!0,padHour:!1,padMin:!0,padSec:!0,sepHour:":",sepMin:":",sepSec:""};var c=function(){this.init()};c.prototype={init:function(){this.options={timeFormat:a.jPlayer.timeFormat}},time:function(a){a=a&&"number"==typeof a?a:0;var b=new Date(1e3*a),c=b.getUTCHours(),d=this.options.timeFormat.showHour?b.getUTCMinutes():b.getUTCMinutes()+60*c,e=this.options.timeFormat.showMin?b.getUTCSeconds():b.getUTCSeconds()+60*d,f=this.options.timeFormat.padHour&&10>c?"0"+c:c,g=this.options.timeFormat.padMin&&10>d?"0"+d:d,h=this.options.timeFormat.padSec&&10>e?"0"+e:e,i="";return i+=this.options.timeFormat.showHour?f+this.options.timeFormat.sepHour:"",i+=this.options.timeFormat.showMin?g+this.options.timeFormat.sepMin:"",i+=this.options.timeFormat.showSec?h+this.options.timeFormat.sepSec:""}};var d=new c;a.jPlayer.convertTime=function(a){return d.time(a)},a.jPlayer.uaBrowser=function(a){var b=a.toLowerCase(),c=/(webkit)[ \/]([\w.]+)/,d=/(opera)(?:.*version)?[ \/]([\w.]+)/,e=/(msie) ([\w.]+)/,f=/(mozilla)(?:.*? rv:([\w.]+))?/,g=c.exec(b)||d.exec(b)||e.exec(b)||b.indexOf("compatible")<0&&f.exec(b)||[];return{browser:g[1]||"",version:g[2]||"0"}},a.jPlayer.uaPlatform=function(a){var b=a.toLowerCase(),c=/(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/,d=/(ipad|playbook)/,e=/(android)/,f=/(mobile)/,g=c.exec(b)||[],h=d.exec(b)||!f.exec(b)&&e.exec(b)||[];return g[1]&&(g[1]=g[1].replace(/\s/g,"_")),{platform:g[1]||"",tablet:h[1]||""}},a.jPlayer.browser={},a.jPlayer.platform={};var e=a.jPlayer.uaBrowser(navigator.userAgent);e.browser&&(a.jPlayer.browser[e.browser]=!0,a.jPlayer.browser.version=e.version);var f=a.jPlayer.uaPlatform(navigator.userAgent);f.platform&&(a.jPlayer.platform[f.platform]=!0,a.jPlayer.platform.mobile=!f.tablet,a.jPlayer.platform.tablet=!!f.tablet),a.jPlayer.getDocMode=function(){var b;return a.jPlayer.browser.msie&&(document.documentMode?b=document.documentMode:(b=5,document.compatMode&&"CSS1Compat"===document.compatMode&&(b=7))),b},a.jPlayer.browser.documentMode=a.jPlayer.getDocMode(),a.jPlayer.nativeFeatures={init:function(){var a,b,c,d=document,e=d.createElement("video"),f={w3c:["fullscreenEnabled","fullscreenElement","requestFullscreen","exitFullscreen","fullscreenchange","fullscreenerror"],moz:["mozFullScreenEnabled","mozFullScreenElement","mozRequestFullScreen","mozCancelFullScreen","mozfullscreenchange","mozfullscreenerror"],webkit:["","webkitCurrentFullScreenElement","webkitRequestFullScreen","webkitCancelFullScreen","webkitfullscreenchange",""],webkitVideo:["webkitSupportsFullscreen","webkitDisplayingFullscreen","webkitEnterFullscreen","webkitExitFullscreen","",""],ms:["","msFullscreenElement","msRequestFullscreen","msExitFullscreen","MSFullscreenChange","MSFullscreenError"]},g=["w3c","moz","webkit","webkitVideo","ms"];for(this.fullscreen=a={support:{w3c:!!d[f.w3c[0]],moz:!!d[f.moz[0]],webkit:"function"==typeof d[f.webkit[3]],webkitVideo:"function"==typeof e[f.webkitVideo[2]],ms:"function"==typeof e[f.ms[2]]},used:{}},b=0,c=g.length;c>b;b++){var h=g[b];if(a.support[h]){a.spec=h,a.used[h]=!0;break}}if(a.spec){var i=f[a.spec];a.api={fullscreenEnabled:!0,fullscreenElement:function(a){return a=a?a:d,a[i[1]]},requestFullscreen:function(a){return a[i[2]]()},exitFullscreen:function(a){return a=a?a:d,a[i[3]]()}},a.event={fullscreenchange:i[4],fullscreenerror:i[5]}}else a.api={fullscreenEnabled:!1,fullscreenElement:function(){return null},requestFullscreen:function(){},exitFullscreen:function(){}},a.event={}}},a.jPlayer.nativeFeatures.init(),a.jPlayer.focus=null,a.jPlayer.keyIgnoreElementNames="A INPUT TEXTAREA SELECT BUTTON";var g=function(b){var c,d=a.jPlayer.focus;d&&(a.each(a.jPlayer.keyIgnoreElementNames.split(/\s+/g),function(a,d){return b.target.nodeName.toUpperCase()===d.toUpperCase()?(c=!0,!1):void 0}),c||a.each(d.options.keyBindings,function(c,e){return e&&a.isFunction(e.fn)&&("number"==typeof e.key&&b.which===e.key||"string"==typeof e.key&&b.key===e.key)?(b.preventDefault(),e.fn(d),!1):void 0}))};a.jPlayer.keys=function(b){var c="keydown.jPlayer";a(document.documentElement).unbind(c),b&&a(document.documentElement).bind(c,g)},a.jPlayer.keys(!0),a.jPlayer.prototype={count:0,version:{script:"2.9.2",needFlash:"2.9.0",flash:"unknown"},options:{swfPath:"js",solution:"html, flash",supplied:"mp3",auroraFormats:"wav",preload:"metadata",volume:.8,muted:!1,remainingDuration:!1,toggleDuration:!1,captureDuration:!0,playbackRate:1,defaultPlaybackRate:1,minPlaybackRate:.5,maxPlaybackRate:4,wmode:"opaque",backgroundColor:"#000000",cssSelectorAncestor:"#jp_container_1",cssSelector:{videoPlay:".jp-video-play",play:".jp-play",pause:".jp-pause",stop:".jp-stop",seekBar:".jp-seek-bar",playBar:".jp-play-bar",mute:".jp-mute",unmute:".jp-unmute",volumeBar:".jp-volume-bar",volumeBarValue:".jp-volume-bar-value",volumeMax:".jp-volume-max",playbackRateBar:".jp-playback-rate-bar",playbackRateBarValue:".jp-playback-rate-bar-value",currentTime:".jp-current-time",duration:".jp-duration",title:".jp-title",fullScreen:".jp-full-screen",restoreScreen:".jp-restore-screen",repeat:".jp-repeat",repeatOff:".jp-repeat-off",gui:".jp-gui",noSolution:".jp-no-solution"},stateClass:{playing:"jp-state-playing",seeking:"jp-state-seeking",muted:"jp-state-muted",looped:"jp-state-looped",fullScreen:"jp-state-full-screen",noVolume:"jp-state-no-volume"},useStateClassSkin:!1,autoBlur:!0,smoothPlayBar:!1,fullScreen:!1,fullWindow:!1,autohide:{restored:!1,full:!0,fadeIn:200,fadeOut:600,hold:1e3},loop:!1,repeat:function(b){b.jPlayer.options.loop?a(this).unbind(".jPlayerRepeat").bind(a.jPlayer.event.ended+".jPlayer.jPlayerRepeat",function(){a(this).jPlayer("play")}):a(this).unbind(".jPlayerRepeat")},nativeVideoControls:{},noFullWindow:{msie:/msie [0-6]\./,ipad:/ipad.*?os [0-4]\./,iphone:/iphone/,ipod:/ipod/,android_pad:/android [0-3]\.(?!.*?mobile)/,android_phone:/(?=.*android)(?!.*chrome)(?=.*mobile)/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/},noVolume:{ipad:/ipad/,iphone:/iphone/,ipod:/ipod/,android_pad:/android(?!.*?mobile)/,android_phone:/android.*?mobile/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/,playbook:/playbook/},timeFormat:{},keyEnabled:!1,audioFullScreen:!1,keyBindings:{play:{key:80,fn:function(a){a.status.paused?a.play():a.pause()}},fullScreen:{key:70,fn:function(a){(a.status.video||a.options.audioFullScreen)&&a._setOption("fullScreen",!a.options.fullScreen)}},muted:{key:77,fn:function(a){a._muted(!a.options.muted)}},volumeUp:{key:190,fn:function(a){a.volume(a.options.volume+.1)}},volumeDown:{key:188,fn:function(a){a.volume(a.options.volume-.1)}},loop:{key:76,fn:function(a){a._loop(!a.options.loop)}}},verticalVolume:!1,verticalPlaybackRate:!1,globalVolume:!1,idPrefix:"jp",noConflict:"jQuery",emulateHtml:!1,consoleAlerts:!0,errorAlerts:!1,warningAlerts:!1},optionsAudio:{size:{width:"0px",height:"0px",cssClass:""},sizeFull:{width:"0px",height:"0px",cssClass:""}},optionsVideo:{size:{width:"480px",height:"270px",cssClass:"jp-video-270p"},sizeFull:{width:"100%",height:"100%",cssClass:"jp-video-full"}},instances:{},status:{src:"",media:{},paused:!0,format:{},formatType:"",waitForPlay:!0,waitForLoad:!0,srcSet:!1,video:!1,seekPercent:0,currentPercentRelative:0,currentPercentAbsolute:0,currentTime:0,duration:0,remaining:0,videoWidth:0,videoHeight:0,readyState:0,networkState:0,playbackRate:1,ended:0},internal:{ready:!1},solution:{html:!0,aurora:!0,flash:!0},format:{mp3:{codec:"audio/mpeg",flashCanPlay:!0,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:!0,media:"audio"},m3u8a:{codec:'application/vnd.apple.mpegurl; codecs="mp4a.40.2"',flashCanPlay:!1,media:"audio"},m3ua:{codec:"audio/mpegurl",flashCanPlay:!1,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis, opus"',flashCanPlay:!1,media:"audio"},flac:{codec:"audio/x-flac",flashCanPlay:!1,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:!1,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:!1,media:"audio"},fla:{codec:"audio/x-flv",flashCanPlay:!0,media:"audio"},rtmpa:{codec:'audio/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!0,media:"video"},m3u8v:{codec:'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!1,media:"video"},m3uv:{codec:"audio/mpegurl",flashCanPlay:!1,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',flashCanPlay:!1,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:!1,media:"video"},flv:{codec:"video/x-flv",flashCanPlay:!0,media:"video"},rtmpv:{codec:'video/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"video"}},_init:function(){var c=this;if(this.element.empty(),this.status=a.extend({},this.status),this.internal=a.extend({},this.internal),this.options.timeFormat=a.extend({},a.jPlayer.timeFormat,this.options.timeFormat),this.internal.cmdsIgnored=a.jPlayer.platform.ipad||a.jPlayer.platform.iphone||a.jPlayer.platform.ipod,this.internal.domNode=this.element.get(0),this.options.keyEnabled&&!a.jPlayer.focus&&(a.jPlayer.focus=this),this.androidFix={setMedia:!1,play:!1,pause:!1,time:0/0},a.jPlayer.platform.android&&(this.options.preload="auto"!==this.options.preload?"metadata":"auto"),this.formats=[],this.solutions=[],this.require={},this.htmlElement={},this.html={},this.html.audio={},this.html.video={},this.aurora={},this.aurora.formats=[],this.aurora.properties=[],this.flash={},this.css={},this.css.cs={},this.css.jq={},this.ancestorJq=[],this.options.volume=this._limitValue(this.options.volume,0,1),a.each(this.options.supplied.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.format[e]){var f=!1;a.each(c.formats,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.formats.push(e)}}),a.each(this.options.solution.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.solution[e]){var f=!1;a.each(c.solutions,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.solutions.push(e)}}),a.each(this.options.auroraFormats.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.format[e]){var f=!1;a.each(c.aurora.formats,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.aurora.formats.push(e)}}),this.internal.instance="jp_"+this.count,this.instances[this.internal.instance]=this.element,this.element.attr("id")||this.element.attr("id",this.options.idPrefix+"_jplayer_"+this.count),this.internal.self=a.extend({},{id:this.element.attr("id"),jq:this.element}),this.internal.audio=a.extend({},{id:this.options.idPrefix+"_audio_"+this.count,jq:b}),this.internal.video=a.extend({},{id:this.options.idPrefix+"_video_"+this.count,jq:b}),this.internal.flash=a.extend({},{id:this.options.idPrefix+"_flash_"+this.count,jq:b,swf:this.options.swfPath+(".swf"!==this.options.swfPath.toLowerCase().slice(-4)?(this.options.swfPath&&"/"!==this.options.swfPath.slice(-1)?"/":"")+"jquery.jplayer.swf":"")}),this.internal.poster=a.extend({},{id:this.options.idPrefix+"_poster_"+this.count,jq:b}),a.each(a.jPlayer.event,function(a,d){c.options[a]!==b&&(c.element.bind(d+".jPlayer",c.options[a]),c.options[a]=b)}),this.require.audio=!1,this.require.video=!1,a.each(this.formats,function(a,b){c.require[c.format[b].media]=!0}),this.options=this.require.video?a.extend(!0,{},this.optionsVideo,this.options):a.extend(!0,{},this.optionsAudio,this.options),this._setSize(),this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls),this.status.noFullWindow=this._uaBlocklist(this.options.noFullWindow),this.status.noVolume=this._uaBlocklist(this.options.noVolume),a.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled&&this._fullscreenAddEventListeners(),this._restrictNativeVideoControls(),this.htmlElement.poster=document.createElement("img"),this.htmlElement.poster.id=this.internal.poster.id,this.htmlElement.poster.onload=function(){(!c.status.video||c.status.waitForPlay)&&c.internal.poster.jq.show()},this.element.append(this.htmlElement.poster),this.internal.poster.jq=a("#"+this.internal.poster.id),this.internal.poster.jq.css({width:this.status.width,height:this.status.height}),this.internal.poster.jq.hide(),this.internal.poster.jq.bind("click.jPlayer",function(){c._trigger(a.jPlayer.event.click)}),this.html.audio.available=!1,this.require.audio&&(this.htmlElement.audio=document.createElement("audio"),this.htmlElement.audio.id=this.internal.audio.id,this.html.audio.available=!!this.htmlElement.audio.canPlayType&&this._testCanPlayType(this.htmlElement.audio)),this.html.video.available=!1,this.require.video&&(this.htmlElement.video=document.createElement("video"),this.htmlElement.video.id=this.internal.video.id,this.html.video.available=!!this.htmlElement.video.canPlayType&&this._testCanPlayType(this.htmlElement.video)),this.flash.available=this._checkForFlash(10.1),this.html.canPlay={},this.aurora.canPlay={},this.flash.canPlay={},a.each(this.formats,function(b,d){c.html.canPlay[d]=c.html[c.format[d].media].available&&""!==c.htmlElement[c.format[d].media].canPlayType(c.format[d].codec),c.aurora.canPlay[d]=a.inArray(d,c.aurora.formats)>-1,c.flash.canPlay[d]=c.format[d].flashCanPlay&&c.flash.available}),this.html.desired=!1,this.aurora.desired=!1,this.flash.desired=!1,a.each(this.solutions,function(b,d){if(0===b)c[d].desired=!0;else{var e=!1,f=!1;a.each(c.formats,function(a,b){c[c.solutions[0]].canPlay[b]&&("video"===c.format[b].media?f=!0:e=!0)}),c[d].desired=c.require.audio&&!e||c.require.video&&!f}}),this.html.support={},this.aurora.support={},this.flash.support={},a.each(this.formats,function(a,b){c.html.support[b]=c.html.canPlay[b]&&c.html.desired,c.aurora.support[b]=c.aurora.canPlay[b]&&c.aurora.desired,c.flash.support[b]=c.flash.canPlay[b]&&c.flash.desired}),this.html.used=!1,this.aurora.used=!1,this.flash.used=!1,a.each(this.solutions,function(b,d){a.each(c.formats,function(a,b){return c[d].support[b]?(c[d].used=!0,!1):void 0})}),this._resetActive(),this._resetGate(),this._cssSelectorAncestor(this.options.cssSelectorAncestor),this.html.used||this.aurora.used||this.flash.used?this.css.jq.noSolution.length&&this.css.jq.noSolution.hide():(this._error({type:a.jPlayer.error.NO_SOLUTION,context:"{solution:'"+this.options.solution+"', supplied:'"+this.options.supplied+"'}",message:a.jPlayer.errorMsg.NO_SOLUTION,hint:a.jPlayer.errorHint.NO_SOLUTION}),this.css.jq.noSolution.length&&this.css.jq.noSolution.show()),this.flash.used){var d,e="jQuery="+encodeURI(this.options.noConflict)+"&id="+encodeURI(this.internal.self.id)+"&vol="+this.options.volume+"&muted="+this.options.muted;if(a.jPlayer.browser.msie&&(Number(a.jPlayer.browser.version)<9||a.jPlayer.browser.documentMode<9)){var f='',g=['','','','',''];d=document.createElement(f);for(var h=0;h0&&(d.internal.cmdsIgnored=!1),d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.progress))},!1),b.addEventListener("loadeddata",function(){c.gate&&(d.androidFix.setMedia=!1,d.androidFix.play&&(d.androidFix.play=!1,d.play(d.androidFix.time)),d.androidFix.pause&&(d.androidFix.pause=!1,d.pause(d.androidFix.time)),d._trigger(a.jPlayer.event.loadeddata))},!1),b.addEventListener("timeupdate",function(){c.gate&&(d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.timeupdate))},!1),b.addEventListener("durationchange",function(){c.gate&&(d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.durationchange))},!1),b.addEventListener("play",function(){c.gate&&(d._updateButtons(!0),d._html_checkWaitForPlay(),d._trigger(a.jPlayer.event.play))},!1),b.addEventListener("playing",function(){c.gate&&(d._updateButtons(!0),d._seeked(),d._trigger(a.jPlayer.event.playing))},!1),b.addEventListener("pause",function(){c.gate&&(d._updateButtons(!1),d._trigger(a.jPlayer.event.pause))},!1),b.addEventListener("waiting",function(){c.gate&&(d._seeking(),d._trigger(a.jPlayer.event.waiting))},!1),b.addEventListener("seeking",function(){c.gate&&(d._seeking(),d._trigger(a.jPlayer.event.seeking))},!1),b.addEventListener("seeked",function(){c.gate&&(d._seeked(),d._trigger(a.jPlayer.event.seeked))},!1),b.addEventListener("volumechange",function(){c.gate&&(d.options.volume=b.volume,d.options.muted=b.muted,d._updateMute(),d._updateVolume(),d._trigger(a.jPlayer.event.volumechange))},!1),b.addEventListener("ratechange",function(){c.gate&&(d.options.defaultPlaybackRate=b.defaultPlaybackRate,d.options.playbackRate=b.playbackRate,d._updatePlaybackRate(),d._trigger(a.jPlayer.event.ratechange))},!1),b.addEventListener("suspend",function(){c.gate&&(d._seeked(),d._trigger(a.jPlayer.event.suspend))},!1),b.addEventListener("ended",function(){c.gate&&(a.jPlayer.browser.webkit||(d.htmlElement.media.currentTime=0),d.htmlElement.media.pause(),d._updateButtons(!1),d._getHtmlStatus(b,!0),d._updateInterface(),d._trigger(a.jPlayer.event.ended))},!1),b.addEventListener("error",function(){c.gate&&(d._updateButtons(!1),d._seeked(),d.status.srcSet&&(clearTimeout(d.internal.htmlDlyCmdId),d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:a.jPlayer.error.URL,context:d.status.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL})))},!1),a.each(a.jPlayer.htmlEvent,function(e,f){b.addEventListener(this,function(){c.gate&&d._trigger(a.jPlayer.event[f])},!1)})},_addAuroraEventListeners:function(b,c){var d=this;b.volume=100*this.options.volume,b.on("progress",function(){c.gate&&(d.internal.cmdsIgnored&&this.readyState>0&&(d.internal.cmdsIgnored=!1),d._getAuroraStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.progress),b.duration>0&&d._trigger(a.jPlayer.event.timeupdate))},!1),b.on("ready",function(){c.gate&&d._trigger(a.jPlayer.event.loadeddata)},!1),b.on("duration",function(){c.gate&&(d._getAuroraStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.durationchange))},!1),b.on("end",function(){c.gate&&(d._updateButtons(!1),d._getAuroraStatus(b,!0),d._updateInterface(),d._trigger(a.jPlayer.event.ended))},!1),b.on("error",function(){c.gate&&(d._updateButtons(!1),d._seeked(),d.status.srcSet&&(d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:a.jPlayer.error.URL,context:d.status.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL})))},!1)},_getHtmlStatus:function(a,b){var c=0,d=0,e=0,f=0;isFinite(a.duration)&&(this.status.duration=a.duration),c=a.currentTime,d=this.status.duration>0?100*c/this.status.duration:0,"object"==typeof a.seekable&&a.seekable.length>0?(e=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100,f=this.status.duration>0?100*a.currentTime/a.seekable.end(a.seekable.length-1):0):(e=100,f=d),b&&(c=0,f=0,d=0),this.status.seekPercent=e,this.status.currentPercentRelative=f,this.status.currentPercentAbsolute=d,this.status.currentTime=c,this.status.remaining=this.status.duration-this.status.currentTime,this.status.videoWidth=a.videoWidth,this.status.videoHeight=a.videoHeight,this.status.readyState=a.readyState,this.status.networkState=a.networkState,this.status.playbackRate=a.playbackRate,this.status.ended=a.ended},_getAuroraStatus:function(a,b){var c=0,d=0,e=0,f=0;this.status.duration=a.duration/1e3,c=a.currentTime/1e3,d=this.status.duration>0?100*c/this.status.duration:0,a.buffered>0?(e=this.status.duration>0?a.buffered*this.status.duration/this.status.duration:100,f=this.status.duration>0?c/(a.buffered*this.status.duration):0):(e=100,f=d),b&&(c=0,f=0,d=0),this.status.seekPercent=e,this.status.currentPercentRelative=f,this.status.currentPercentAbsolute=d,this.status.currentTime=c,this.status.remaining=this.status.duration-this.status.currentTime,this.status.readyState=4,this.status.networkState=0,this.status.playbackRate=1,this.status.ended=!1},_resetStatus:function(){this.status=a.extend({},this.status,a.jPlayer.prototype.status)},_trigger:function(b,c,d){var e=a.Event(b);e.jPlayer={},e.jPlayer.version=a.extend({},this.version),e.jPlayer.options=a.extend(!0,{},this.options),e.jPlayer.status=a.extend(!0,{},this.status),e.jPlayer.html=a.extend(!0,{},this.html),e.jPlayer.aurora=a.extend(!0,{},this.aurora),e.jPlayer.flash=a.extend(!0,{},this.flash),c&&(e.jPlayer.error=a.extend({},c)),d&&(e.jPlayer.warning=a.extend({},d)),this.element.trigger(e)},jPlayerFlashEvent:function(b,c){if(b===a.jPlayer.event.ready)if(this.internal.ready){if(this.flash.gate){if(this.status.srcSet){var d=this.status.currentTime,e=this.status.paused;this.setMedia(this.status.media),this.volumeWorker(this.options.volume),d>0&&(e?this.pause(d):this.play(d))}this._trigger(a.jPlayer.event.flashreset)}}else this.internal.ready=!0,this.internal.flash.jq.css({width:"0px",height:"0px"}),this.version.flash=c.version,this.version.needFlash!==this.version.flash&&this._error({type:a.jPlayer.error.VERSION,context:this.version.flash,message:a.jPlayer.errorMsg.VERSION+this.version.flash,hint:a.jPlayer.errorHint.VERSION}),this._trigger(a.jPlayer.event.repeat),this._trigger(b);if(this.flash.gate)switch(b){case a.jPlayer.event.progress:this._getFlashStatus(c),this._updateInterface(),this._trigger(b);break;case a.jPlayer.event.timeupdate:this._getFlashStatus(c),this._updateInterface(),this._trigger(b);break;case a.jPlayer.event.play:this._seeked(),this._updateButtons(!0),this._trigger(b);break;case a.jPlayer.event.pause:this._updateButtons(!1),this._trigger(b);break;case a.jPlayer.event.ended:this._updateButtons(!1),this._trigger(b);break;case a.jPlayer.event.click:this._trigger(b);break;case a.jPlayer.event.error:this.status.waitForLoad=!0,this.status.waitForPlay=!0,this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"}),this._validString(this.status.media.poster)&&this.internal.poster.jq.show(),this.css.jq.videoPlay.length&&this.status.video&&this.css.jq.videoPlay.show(),this.status.video?this._flash_setVideo(this.status.media):this._flash_setAudio(this.status.media),this._updateButtons(!1),this._error({type:a.jPlayer.error.URL,context:c.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL});break;case a.jPlayer.event.seeking:this._seeking(),this._trigger(b);break;case a.jPlayer.event.seeked:this._seeked(),this._trigger(b);break;case a.jPlayer.event.ready:break;default:this._trigger(b)}return!1},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent,this.status.currentPercentRelative=a.currentPercentRelative,this.status.currentPercentAbsolute=a.currentPercentAbsolute,this.status.currentTime=a.currentTime,this.status.duration=a.duration,this.status.remaining=a.duration-a.currentTime,this.status.videoWidth=a.videoWidth,this.status.videoHeight=a.videoHeight,this.status.readyState=4,this.status.networkState=0,this.status.playbackRate=1,this.status.ended=!1},_updateButtons:function(a){a===b?a=!this.status.paused:this.status.paused=!a,a?this.addStateClass("playing"):this.removeStateClass("playing"),!this.status.noFullWindow&&this.options.fullWindow?this.addStateClass("fullScreen"):this.removeStateClass("fullScreen"),this.options.loop?this.addStateClass("looped"):this.removeStateClass("looped"),this.css.jq.play.length&&this.css.jq.pause.length&&(a?(this.css.jq.play.hide(),this.css.jq.pause.show()):(this.css.jq.play.show(),this.css.jq.pause.hide())),this.css.jq.restoreScreen.length&&this.css.jq.fullScreen.length&&(this.status.noFullWindow?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.hide()):this.options.fullWindow?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.show()):(this.css.jq.fullScreen.show(),this.css.jq.restoreScreen.hide())),this.css.jq.repeat.length&&this.css.jq.repeatOff.length&&(this.options.loop?(this.css.jq.repeat.hide(),this.css.jq.repeatOff.show()):(this.css.jq.repeat.show(),this.css.jq.repeatOff.hide()))},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+"%"),this.css.jq.playBar.length&&(this.options.smoothPlayBar?this.css.jq.playBar.stop().animate({width:this.status.currentPercentAbsolute+"%"},250,"linear"):this.css.jq.playBar.width(this.status.currentPercentRelative+"%"));var a="";this.css.jq.currentTime.length&&(a=this._convertTime(this.status.currentTime),a!==this.css.jq.currentTime.text()&&this.css.jq.currentTime.text(this._convertTime(this.status.currentTime)));var b="",c=this.status.duration,d=this.status.remaining;this.css.jq.duration.length&&("string"==typeof this.status.media.duration?b=this.status.media.duration:("number"==typeof this.status.media.duration&&(c=this.status.media.duration,d=c-this.status.currentTime),b=this.options.remainingDuration?(d>0?"-":"")+this._convertTime(d):this._convertTime(c)),b!==this.css.jq.duration.text()&&this.css.jq.duration.text(b))},_convertTime:c.prototype.time,_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg"),this.addStateClass("seeking")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg"),this.removeStateClass("seeking")},_resetGate:function(){this.html.audio.gate=!1,this.html.video.gate=!1,this.aurora.gate=!1,this.flash.gate=!1},_resetActive:function(){this.html.active=!1,this.aurora.active=!1,this.flash.active=!1},_escapeHtml:function(a){return a.split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""")},_qualifyURL:function(a){var b=document.createElement("div"); +return b.innerHTML='x',b.firstChild.href},_absoluteMediaUrls:function(b){var c=this;return a.each(b,function(a,d){d&&c.format[a]&&"data:"!==d.substr(0,5)&&(b[a]=c._qualifyURL(d))}),b},addStateClass:function(a){this.ancestorJq.length&&this.ancestorJq.addClass(this.options.stateClass[a])},removeStateClass:function(a){this.ancestorJq.length&&this.ancestorJq.removeClass(this.options.stateClass[a])},setMedia:function(b){var c=this,d=!1,e=this.status.media.poster!==b.poster;this._resetMedia(),this._resetGate(),this._resetActive(),this.androidFix.setMedia=!1,this.androidFix.play=!1,this.androidFix.pause=!1,b=this._absoluteMediaUrls(b),a.each(this.formats,function(e,f){var g="video"===c.format[f].media;return a.each(c.solutions,function(e,h){if(c[h].support[f]&&c._validString(b[f])){var i="html"===h,j="aurora"===h;return g?(i?(c.html.video.gate=!0,c._html_setVideo(b),c.html.active=!0):(c.flash.gate=!0,c._flash_setVideo(b),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.show(),c.status.video=!0):(i?(c.html.audio.gate=!0,c._html_setAudio(b),c.html.active=!0,a.jPlayer.platform.android&&(c.androidFix.setMedia=!0)):j?(c.aurora.gate=!0,c._aurora_setAudio(b),c.aurora.active=!0):(c.flash.gate=!0,c._flash_setAudio(b),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.hide(),c.status.video=!1),d=!0,!1}}),d?!1:void 0}),d?(this.status.nativeVideoControls&&this.html.video.gate||this._validString(b.poster)&&(e?this.htmlElement.poster.src=b.poster:this.internal.poster.jq.show()),"string"==typeof b.title&&(this.css.jq.title.length&&this.css.jq.title.html(b.title),this.htmlElement.audio&&this.htmlElement.audio.setAttribute("title",b.title),this.htmlElement.video&&this.htmlElement.video.setAttribute("title",b.title)),this.status.srcSet=!0,this.status.media=a.extend({},b),this._updateButtons(!1),this._updateInterface(),this._trigger(a.jPlayer.event.setmedia)):this._error({type:a.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:a.jPlayer.errorMsg.NO_SUPPORT,hint:a.jPlayer.errorHint.NO_SUPPORT})},_resetMedia:function(){this._resetStatus(),this._updateButtons(!1),this._updateInterface(),this._seeked(),this.internal.poster.jq.hide(),clearTimeout(this.internal.htmlDlyCmdId),this.html.active?this._html_resetMedia():this.aurora.active?this._aurora_resetMedia():this.flash.active&&this._flash_resetMedia()},clearMedia:function(){this._resetMedia(),this.html.active?this._html_clearMedia():this.aurora.active?this._aurora_clearMedia():this.flash.active&&this._flash_clearMedia(),this._resetGate(),this._resetActive()},load:function(){this.status.srcSet?this.html.active?this._html_load():this.aurora.active?this._aurora_load():this.flash.active&&this._flash_load():this._urlNotSetError("load")},focus:function(){this.options.keyEnabled&&(a.jPlayer.focus=this)},play:function(a){var b="object"==typeof a;b&&this.options.useStateClassSkin&&!this.status.paused?this.pause(a):(a="number"==typeof a?a:0/0,this.status.srcSet?(this.focus(),this.html.active?this._html_play(a):this.aurora.active?this._aurora_play(a):this.flash.active&&this._flash_play(a)):this._urlNotSetError("play"))},videoPlay:function(){this.play()},pause:function(a){a="number"==typeof a?a:0/0,this.status.srcSet?this.html.active?this._html_pause(a):this.aurora.active?this._aurora_pause(a):this.flash.active&&this._flash_pause(a):this._urlNotSetError("pause")},tellOthers:function(b,c){var d=this,e="function"==typeof c,f=Array.prototype.slice.call(arguments);"string"==typeof b&&(e&&f.splice(1,1),a.jPlayer.prototype.destroyRemoved(),a.each(this.instances,function(){d.element!==this&&(!e||c.call(this.data("jPlayer"),d))&&this.jPlayer.apply(this,f)}))},pauseOthers:function(a){this.tellOthers("pause",function(){return this.status.srcSet},a)},stop:function(){this.status.srcSet?this.html.active?this._html_pause(0):this.aurora.active?this._aurora_pause(0):this.flash.active&&this._flash_pause(0):this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100),this.status.srcSet?this.html.active?this._html_playHead(a):this.aurora.active?this._aurora_playHead(a):this.flash.active&&this._flash_playHead(a):this._urlNotSetError("playHead")},_muted:function(a){this.mutedWorker(a),this.options.globalVolume&&this.tellOthers("mutedWorker",function(){return this.options.globalVolume},a)},mutedWorker:function(b){this.options.muted=b,this.html.used&&this._html_setProperty("muted",b),this.aurora.used&&this._aurora_mute(b),this.flash.used&&this._flash_mute(b),this.html.video.gate||this.html.audio.gate||(this._updateMute(b),this._updateVolume(this.options.volume),this._trigger(a.jPlayer.event.volumechange))},mute:function(a){var c="object"==typeof a;c&&this.options.useStateClassSkin&&this.options.muted?this._muted(!1):(a=a===b?!0:!!a,this._muted(a))},unmute:function(a){a=a===b?!0:!!a,this._muted(!a)},_updateMute:function(a){a===b&&(a=this.options.muted),a?this.addStateClass("muted"):this.removeStateClass("muted"),this.css.jq.mute.length&&this.css.jq.unmute.length&&(this.status.noVolume?(this.css.jq.mute.hide(),this.css.jq.unmute.hide()):a?(this.css.jq.mute.hide(),this.css.jq.unmute.show()):(this.css.jq.mute.show(),this.css.jq.unmute.hide()))},volume:function(a){this.volumeWorker(a),this.options.globalVolume&&this.tellOthers("volumeWorker",function(){return this.options.globalVolume},a)},volumeWorker:function(b){b=this._limitValue(b,0,1),this.options.volume=b,this.html.used&&this._html_setProperty("volume",b),this.aurora.used&&this._aurora_volume(b),this.flash.used&&this._flash_volume(b),this.html.video.gate||this.html.audio.gate||(this._updateVolume(b),this._trigger(a.jPlayer.event.volumechange))},volumeBar:function(b){if(this.css.jq.volumeBar.length){var c=a(b.currentTarget),d=c.offset(),e=b.pageX-d.left,f=c.width(),g=c.height()-b.pageY+d.top,h=c.height();this.volume(this.options.verticalVolume?g/h:e/f)}this.options.muted&&this._muted(!1)},_updateVolume:function(a){a===b&&(a=this.options.volume),a=this.options.muted?0:a,this.status.noVolume?(this.addStateClass("noVolume"),this.css.jq.volumeBar.length&&this.css.jq.volumeBar.hide(),this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.hide(),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.hide()):(this.removeStateClass("noVolume"),this.css.jq.volumeBar.length&&this.css.jq.volumeBar.show(),this.css.jq.volumeBarValue.length&&(this.css.jq.volumeBarValue.show(),this.css.jq.volumeBarValue[this.options.verticalVolume?"height":"width"](100*a+"%")),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.show())},volumeMax:function(){this.volume(1),this.options.muted&&this._muted(!1)},_cssSelectorAncestor:function(b){var c=this;this.options.cssSelectorAncestor=b,this._removeUiClass(),this.ancestorJq=b?a(b):[],b&&1!==this.ancestorJq.length&&this._warning({type:a.jPlayer.warning.CSS_SELECTOR_COUNT,context:b,message:a.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.ancestorJq.length+" found for cssSelectorAncestor.",hint:a.jPlayer.warningHint.CSS_SELECTOR_COUNT}),this._addUiClass(),a.each(this.options.cssSelector,function(a,b){c._cssSelector(a,b)}),this._updateInterface(),this._updateButtons(),this._updateAutohide(),this._updateVolume(),this._updateMute()},_cssSelector:function(b,c){var d=this;if("string"==typeof c)if(a.jPlayer.prototype.options.cssSelector[b]){if(this.css.jq[b]&&this.css.jq[b].length&&this.css.jq[b].unbind(".jPlayer"),this.options.cssSelector[b]=c,this.css.cs[b]=this.options.cssSelectorAncestor+" "+c,this.css.jq[b]=c?a(this.css.cs[b]):[],this.css.jq[b].length&&this[b]){var e=function(c){c.preventDefault(),d[b](c),d.options.autoBlur?a(this).blur():a(this).focus()};this.css.jq[b].bind("click.jPlayer",e)}c&&1!==this.css.jq[b].length&&this._warning({type:a.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[b],message:a.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[b].length+" found for "+b+" method.",hint:a.jPlayer.warningHint.CSS_SELECTOR_COUNT})}else this._warning({type:a.jPlayer.warning.CSS_SELECTOR_METHOD,context:b,message:a.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:a.jPlayer.warningHint.CSS_SELECTOR_METHOD});else this._warning({type:a.jPlayer.warning.CSS_SELECTOR_STRING,context:c,message:a.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:a.jPlayer.warningHint.CSS_SELECTOR_STRING})},duration:function(a){this.options.toggleDuration&&(this.options.captureDuration&&a.stopPropagation(),this._setOption("remainingDuration",!this.options.remainingDuration))},seekBar:function(b){if(this.css.jq.seekBar.length){var c=a(b.currentTarget),d=c.offset(),e=b.pageX-d.left,f=c.width(),g=100*e/f;this.playHead(g)}},playbackRate:function(a){this._setOption("playbackRate",a)},playbackRateBar:function(b){if(this.css.jq.playbackRateBar.length){var c,d,e=a(b.currentTarget),f=e.offset(),g=b.pageX-f.left,h=e.width(),i=e.height()-b.pageY+f.top,j=e.height();c=this.options.verticalPlaybackRate?i/j:g/h,d=c*(this.options.maxPlaybackRate-this.options.minPlaybackRate)+this.options.minPlaybackRate,this.playbackRate(d)}},_updatePlaybackRate:function(){var a=this.options.playbackRate,b=(a-this.options.minPlaybackRate)/(this.options.maxPlaybackRate-this.options.minPlaybackRate);this.status.playbackRateEnabled?(this.css.jq.playbackRateBar.length&&this.css.jq.playbackRateBar.show(),this.css.jq.playbackRateBarValue.length&&(this.css.jq.playbackRateBarValue.show(),this.css.jq.playbackRateBarValue[this.options.verticalPlaybackRate?"height":"width"](100*b+"%"))):(this.css.jq.playbackRateBar.length&&this.css.jq.playbackRateBar.hide(),this.css.jq.playbackRateBarValue.length&&this.css.jq.playbackRateBarValue.hide())},repeat:function(a){var b="object"==typeof a;this._loop(b&&this.options.useStateClassSkin&&this.options.loop?!1:!0)},repeatOff:function(){this._loop(!1)},_loop:function(b){this.options.loop!==b&&(this.options.loop=b,this._updateButtons(),this._trigger(a.jPlayer.event.repeat))},option:function(c,d){var e=c;if(0===arguments.length)return a.extend(!0,{},this.options);if("string"==typeof c){var f=c.split(".");if(d===b){for(var g=a.extend(!0,{},this.options),h=0;h0||Math.floor(d)>0):e=!0,a.internal.mouse={x:b.pageX,y:b.pageY},e&&a.css.jq.gui.fadeIn(a.options.autohide.fadeIn,function(){clearTimeout(a.internal.autohideId),a.internal.autohideId=setTimeout(function(){a.css.jq.gui.fadeOut(a.options.autohide.fadeOut)},a.options.autohide.hold)})};this.css.jq.gui.length&&(this.css.jq.gui.stop(!0,!0),clearTimeout(this.internal.autohideId),delete this.internal.mouse,this.element.unbind(c),this.css.jq.gui.unbind(c),this.status.nativeVideoControls?this.css.jq.gui.hide():this.options.fullWindow&&this.options.autohide.full||!this.options.fullWindow&&this.options.autohide.restored?(this.element.bind(d,e),this.css.jq.gui.bind(d,e),this.css.jq.gui.hide()):this.css.jq.gui.show())},fullScreen:function(a){var b="object"==typeof a;b&&this.options.useStateClassSkin&&this.options.fullScreen?this._setOption("fullScreen",!1):this._setOption("fullScreen",!0)},restoreScreen:function(){this._setOption("fullScreen",!1)},_fullscreenAddEventListeners:function(){var b=this,c=a.jPlayer.nativeFeatures.fullscreen;c.api.fullscreenEnabled&&c.event.fullscreenchange&&("function"!=typeof this.internal.fullscreenchangeHandler&&(this.internal.fullscreenchangeHandler=function(){b._fullscreenchange()}),document.addEventListener(c.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1))},_fullscreenRemoveEventListeners:function(){var b=a.jPlayer.nativeFeatures.fullscreen;this.internal.fullscreenchangeHandler&&document.removeEventListener(b.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1)},_fullscreenchange:function(){this.options.fullScreen&&!a.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()&&this._setOption("fullScreen",!1)},_requestFullscreen:function(){var b=this.ancestorJq.length?this.ancestorJq[0]:this.element[0],c=a.jPlayer.nativeFeatures.fullscreen;c.used.webkitVideo&&(b=this.htmlElement.video),c.api.fullscreenEnabled&&c.api.requestFullscreen(b)},_exitFullscreen:function(){var b,c=a.jPlayer.nativeFeatures.fullscreen;c.used.webkitVideo&&(b=this.htmlElement.video),c.api.fullscreenEnabled&&c.api.exitFullscreen(b)},_html_initMedia:function(b){var c=a(this.htmlElement.media).empty();a.each(b.track||[],function(a,b){var d=document.createElement("track");d.setAttribute("kind",b.kind?b.kind:""),d.setAttribute("src",b.src?b.src:""),d.setAttribute("srclang",b.srclang?b.srclang:""),d.setAttribute("label",b.label?b.label:""),b.def&&d.setAttribute("default",b.def),c.append(d)}),this.htmlElement.media.src=this.status.src,"none"!==this.options.preload&&this._html_load(),this._trigger(a.jPlayer.event.timeupdate)},_html_setFormat:function(b){var c=this;a.each(this.formats,function(a,d){return c.html.support[d]&&b[d]?(c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1):void 0})},_html_setAudio:function(a){this._html_setFormat(a),this.htmlElement.media=this.htmlElement.audio,this._html_initMedia(a)},_html_setVideo:function(a){this._html_setFormat(a),this.status.nativeVideoControls&&(this.htmlElement.video.poster=this._validString(a.poster)?a.poster:""),this.htmlElement.media=this.htmlElement.video,this._html_initMedia(a)},_html_resetMedia:function(){this.htmlElement.media&&(this.htmlElement.media.id!==this.internal.video.id||this.status.nativeVideoControls||this.internal.video.jq.css({width:"0px",height:"0px"}),this.htmlElement.media.pause())},_html_clearMedia:function(){this.htmlElement.media&&(this.htmlElement.media.src="about:blank",this.htmlElement.media.load())},_html_load:function(){this.status.waitForLoad&&(this.status.waitForLoad=!1,this.htmlElement.media.load()),clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this,c=this.htmlElement.media;if(this.androidFix.pause=!1,this._html_load(),this.androidFix.setMedia)this.androidFix.play=!0,this.androidFix.time=a;else if(isNaN(a))c.play();else{this.internal.cmdsIgnored&&c.play();try{if(c.seekable&&!("object"==typeof c.seekable&&c.seekable.length>0))throw 1;c.currentTime=a,c.play()}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},250))}}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this,c=this.htmlElement.media;if(this.androidFix.play=!1,a>0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId),c.pause(),this.androidFix.setMedia)this.androidFix.pause=!0,this.androidFix.time=a;else if(!isNaN(a))try{if(c.seekable&&!("object"==typeof c.seekable&&c.seekable.length>0))throw 1;c.currentTime=a}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},250))}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this,c=this.htmlElement.media;this._html_load();try{if("object"==typeof c.seekable&&c.seekable.length>0)c.currentTime=a*c.seekable.end(c.seekable.length-1)/100;else{if(!(c.duration>0)||isNaN(c.duration))throw"e";c.currentTime=a*c.duration/100}}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},250))}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height})))},_html_setProperty:function(a,b){this.html.audio.available&&(this.htmlElement.audio[a]=b),this.html.video.available&&(this.htmlElement.video[a]=b)},_aurora_setAudio:function(b){var c=this;a.each(this.formats,function(a,d){return c.aurora.support[d]&&b[d]?(c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1):void 0}),this.aurora.player=new AV.Player.fromURL(this.status.src),this._addAuroraEventListeners(this.aurora.player,this.aurora),"auto"===this.options.preload&&(this._aurora_load(),this.status.waitForLoad=!1)},_aurora_resetMedia:function(){this.aurora.player&&this.aurora.player.stop()},_aurora_clearMedia:function(){},_aurora_load:function(){this.status.waitForLoad&&(this.status.waitForLoad=!1,this.aurora.player.preload())},_aurora_play:function(b){this.status.waitForLoad||isNaN(b)||this.aurora.player.seek(b),this.aurora.player.playing||this.aurora.player.play(),this.status.waitForLoad=!1,this._aurora_checkWaitForPlay(),this._updateButtons(!0),this._trigger(a.jPlayer.event.play)},_aurora_pause:function(b){isNaN(b)||this.aurora.player.seek(1e3*b),this.aurora.player.pause(),b>0&&this._aurora_checkWaitForPlay(),this._updateButtons(!1),this._trigger(a.jPlayer.event.pause)},_aurora_playHead:function(a){this.aurora.player.duration>0&&this.aurora.player.seek(a*this.aurora.player.duration/100),this.status.waitForLoad||this._aurora_checkWaitForPlay()},_aurora_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1)},_aurora_volume:function(a){this.aurora.player.volume=100*a},_aurora_mute:function(a){a?(this.aurora.properties.lastvolume=this.aurora.player.volume,this.aurora.player.volume=0):this.aurora.player.volume=this.aurora.properties.lastvolume,this.aurora.properties.muted=a},_flash_setAudio:function(b){var c=this;try{a.each(this.formats,function(a,d){if(c.flash.support[d]&&b[d]){switch(d){case"m4a":case"fla":c._getMovie().fl_setAudio_m4a(b[d]);break;case"mp3":c._getMovie().fl_setAudio_mp3(b[d]);break;case"rtmpa":c._getMovie().fl_setAudio_rtmp(b[d])}return c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1}}),"auto"===this.options.preload&&(this._flash_load(),this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_setVideo:function(b){var c=this;try{a.each(this.formats,function(a,d){if(c.flash.support[d]&&b[d]){switch(d){case"m4v":case"flv":c._getMovie().fl_setVideo_m4v(b[d]);break;case"rtmpv":c._getMovie().fl_setVideo_rtmp(b[d])}return c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1}}),"auto"===this.options.preload&&(this._flash_load(),this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_resetMedia:function(){this.internal.flash.jq.css({width:"0px",height:"0px"}),this._flash_pause(0/0)},_flash_clearMedia:function(){try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=!1},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=!1,this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}a>0&&(this.status.waitForLoad=!1,this._flash_checkWaitForPlay())},_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.flash.jq.css({width:this.status.width,height:this.status.height})))},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_getFlashPluginVersion:function(){var a,b=0;if(window.ActiveXObject)try{if(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")){var c=a.GetVariable("$version");c&&(c=c.split(" ")[1].split(","),b=parseInt(c[0],10)+"."+parseInt(c[1],10))}}catch(d){}else navigator.plugins&&navigator.mimeTypes.length>0&&(a=navigator.plugins["Shockwave Flash"],a&&(b=navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")));return 1*b},_checkForFlash:function(a){var b=!1;return this._getFlashPluginVersion()>=a&&(b=!0),b},_validString:function(a){return a&&"string"==typeof a},_limitValue:function(a,b,c){return b>a?b:a>c?c:a},_urlNotSetError:function(b){this._error({type:a.jPlayer.error.URL_NOT_SET,context:b,message:a.jPlayer.errorMsg.URL_NOT_SET,hint:a.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(b){var c;c=this.internal.ready?"FLASH_DISABLED":"FLASH",this._error({type:a.jPlayer.error[c],context:this.internal.flash.swf,message:a.jPlayer.errorMsg[c]+b.message,hint:a.jPlayer.errorHint[c]}),this.internal.flash.jq.css({width:"1px",height:"1px"})},_error:function(b){this._trigger(a.jPlayer.event.error,b),this.options.errorAlerts&&this._alert("Error!"+(b.message?"\n"+b.message:"")+(b.hint?"\n"+b.hint:"")+"\nContext: "+b.context)},_warning:function(c){this._trigger(a.jPlayer.event.warning,b,c),this.options.warningAlerts&&this._alert("Warning!"+(c.message?"\n"+c.message:"")+(c.hint?"\n"+c.hint:"")+"\nContext: "+c.context)},_alert:function(a){var b="jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a;this.options.consoleAlerts?window.console&&window.console.log&&window.console.log(b):alert(b)},_emulateHtmlBridge:function(){var b=this;a.each(a.jPlayer.emulateMethods.split(/\s+/g),function(a,c){b.internal.domNode[c]=function(a){b[c](a)}}),a.each(a.jPlayer.event,function(c,d){var e=!0;a.each(a.jPlayer.reservedEvent.split(/\s+/g),function(a,b){return b===c?(e=!1,!1):void 0}),e&&b.element.bind(d+".jPlayer.jPlayerHtml",function(){b._emulateHtmlUpdate();var a=document.createEvent("Event");a.initEvent(c,!1,!0),b.internal.domNode.dispatchEvent(a)})})},_emulateHtmlUpdate:function(){var b=this;a.each(a.jPlayer.emulateStatus.split(/\s+/g),function(a,c){b.internal.domNode[c]=b.status[c]}),a.each(a.jPlayer.emulateOptions.split(/\s+/g),function(a,c){b.internal.domNode[c]=b.options[c]})},_destroyHtmlBridge:function(){var b=this;this.element.unbind(".jPlayerHtml");var c=a.jPlayer.emulateMethods+" "+a.jPlayer.emulateStatus+" "+a.jPlayer.emulateOptions;a.each(c.split(/\s+/g),function(a,c){delete b.internal.domNode[c]})}},a.jPlayer.error={FLASH:"e_flash",FLASH_DISABLED:"e_flash_disabled",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"},a.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",FLASH_DISABLED:"jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",VERSION:"jPlayer "+a.jPlayer.prototype.version.script+" needs Jplayer.swf version "+a.jPlayer.prototype.version.needFlash+" but found "},a.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",FLASH_DISABLED:"Check that you have not display:none; the jPlayer entity or any ancestor.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."},a.jPlayer.warning={CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"},a.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of css selectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."},a.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}}); \ No newline at end of file diff --git a/media/jplayer/jplayer/jquery.jplayer.swf b/media/jplayer/jplayer/jquery.jplayer.swf new file mode 100644 index 0000000000000000000000000000000000000000..340f7f98d0d363bafa787e2bcc7422e15fb7f41c GIT binary patch literal 13714 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 Kh=yOW5&svT>H|gq literal 0 HcmV?d00001 diff --git a/media/jplayer/popcorn/popcorn.jplayer.js b/media/jplayer/popcorn/popcorn.jplayer.js new file mode 100644 index 00000000..8eff0dac --- /dev/null +++ b/media/jplayer/popcorn/popcorn.jplayer.js @@ -0,0 +1,579 @@ +/* + * jPlayer Player Plugin for Popcorn JavaScript Library + * http://www.jplayer.org + * + * Copyright (c) 2012 - 2014 Happyworm Ltd + * Licensed under the MIT license. + * http://opensource.org/licenses/MIT + * + * Author: Mark J Panaghiston + * Version: 1.1.6 + * Date: 27th November 2014 + * + * For Popcorn Version: 1.3 + * For jPlayer Version: 2.9.0 + * Requires: jQuery 1.7+ + * Note: jQuery dependancy cannot be removed since jPlayer 2 is a jQuery plugin. Use of jQuery will be kept to a minimum. + */ + +(function(Popcorn) { + + var JQUERY_SCRIPT = '//code.jquery.com/jquery-1.11.1.min.js', // Used if jQuery not already present. + JPLAYER_SCRIPT = '//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.min.js', // Used if jPlayer not already present. + JPLAYER_SWFPATH = '//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.swf', // Used if not specified in jPlayer options via SRC Object. + SOLUTION = 'html,flash', // The default solution option. + DEBUG = false, // Decided to leave the debugging option and console output in for the time being. Overhead is trivial. + jQueryDownloading = false, // Flag to stop multiple instances from each pulling in jQuery, thus corrupting it. + jPlayerDownloading = false, // Flag to stop multiple instances from each pulling in jPlayer, thus corrupting it. + format = { // Duplicate of jPlayer 2.5.0 object, to avoid always requiring jQuery and jPlayer to be loaded before performing the _canPlayType() test. + mp3: { + codec: 'audio/mpeg', + flashCanPlay: true, + media: 'audio' + }, + m4a: { // AAC / MP4 + codec: 'audio/mp4; codecs="mp4a.40.2"', + flashCanPlay: true, + media: 'audio' + }, + m3u8a: { // AAC / MP4 / Apple HLS + codec: 'application/vnd.apple.mpegurl; codecs="mp4a.40.2"', + flashCanPlay: false, + media: 'audio' + }, + m3ua: { // M3U + codec: 'audio/mpegurl', + flashCanPlay: false, + media: 'audio' + }, + oga: { // OGG + codec: 'audio/ogg; codecs="vorbis, opus"', + flashCanPlay: false, + media: 'audio' + }, + flac: { // FLAC + codec: 'audio/x-flac', + flashCanPlay: false, + media: 'audio' + }, + wav: { // PCM + codec: 'audio/wav; codecs="1"', + flashCanPlay: false, + media: 'audio' + }, + webma: { // WEBM + codec: 'audio/webm; codecs="vorbis"', + flashCanPlay: false, + media: 'audio' + }, + fla: { // FLV / F4A + codec: 'audio/x-flv', + flashCanPlay: true, + media: 'audio' + }, + rtmpa: { // RTMP AUDIO + codec: 'audio/rtmp; codecs="rtmp"', + flashCanPlay: true, + media: 'audio' + }, + m4v: { // H.264 / MP4 + codec: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', + flashCanPlay: true, + media: 'video' + }, + m3u8v: { // H.264 / AAC / MP4 / Apple HLS + codec: 'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"', + flashCanPlay: false, + media: 'video' + }, + m3uv: { // M3U + codec: 'audio/mpegurl', + flashCanPlay: false, + media: 'video' + }, + ogv: { // OGG + codec: 'video/ogg; codecs="theora, vorbis"', + flashCanPlay: false, + media: 'video' + }, + webmv: { // WEBM + codec: 'video/webm; codecs="vorbis, vp8"', + flashCanPlay: false, + media: 'video' + }, + flv: { // FLV / F4V + codec: 'video/x-flv', + flashCanPlay: true, + media: 'video' + }, + rtmpv: { // RTMP VIDEO + codec: 'video/rtmp; codecs="rtmp"', + flashCanPlay: true, + media: 'video' + } + }, + isObject = function(val) { // Basic check for Object + if(val && typeof val === 'object' && val.hasOwnProperty) { + return true; + } else { + return false; + } + }, + getMediaType = function(url) { // Function to gleam the media type from the URL + var mediaType = false; + if(/\.mp3$/i.test(url)) { + mediaType = 'mp3'; + } else if(/\.mp4$/i.test(url) || /\.m4v$/i.test(url)) { + mediaType = 'm4v'; + } else if(/\.m4a$/i.test(url)) { + mediaType = 'm4a'; + } else if(/\.ogg$/i.test(url) || /\.oga$/i.test(url)) { + mediaType = 'oga'; + } else if(/\.ogv$/i.test(url)) { + mediaType = 'ogv'; + } else if(/\.webm$/i.test(url)) { + mediaType = 'webmv'; + } + return mediaType; + }, + getSupplied = function(url) { // Function to generate a supplied option from an src object. ie., When supplied not specified. + var supplied = '', + separator = ''; + if(isObject(url)) { + // Generate supplied option from object's properties. Non-format properties would be ignored by jPlayer. Order is unpredictable. + for(var prop in url) { + if(url.hasOwnProperty(prop)) { + supplied += separator + prop; + separator = ','; + } + } + } + if(DEBUG) console.log('getSupplied(): Generated: supplied = "' + supplied + '"'); + return supplied; + }; + + Popcorn.player( 'jplayer', { + _canPlayType: function( containerType, url ) { + // url : Either a String or an Object structured similar a jPlayer media object. ie., As used by setMedia in jPlayer. + // The url object may also contain a solution and supplied property. + + // Define the src object structure here! + + var cType = containerType.toLowerCase(), + srcObj = { + media:{}, + options:{} + }, + rVal = false, // Only a boolean false means it is not supported. + mediaType; + + if(cType !== 'video' && cType !== 'audio') { + + if(typeof url === 'string') { + // Check it starts with http, so the URL is absolute... Well, it is not a perfect check. + if(/^http.*/i.test(url)) { + mediaType = getMediaType(url); + if(mediaType) { + srcObj.media[mediaType] = url; + srcObj.options.solution = SOLUTION; + srcObj.options.supplied = mediaType; + } + } + } else { + srcObj = url; // Assume the url is an src object. + } + + // Check for Object and appropriate minimum data structure. + if(isObject(srcObj) && isObject(srcObj.media)) { + + if(!isObject(srcObj.options)) { + srcObj.options = {}; + } + + if(!srcObj.options.solution) { + srcObj.options.solution = SOLUTION; + } + + if(!srcObj.options.supplied) { + srcObj.options.supplied = getSupplied(srcObj.media); + } + + // Figure out how jPlayer will play it. + // This may not work properly when both audio and video is supplied. ie., A media player. But it should return truethy and jPlayer can figure it out. + + var solution = srcObj.options.solution.toLowerCase().split(","), // Create the solution array, with prority based on the order of the solution string. + supplied = srcObj.options.supplied.toLowerCase().split(","); // Create the supplied formats array, with prority based on the order of the supplied formats string. + + for(var sol = 0; sol < solution.length; sol++) { + + var solutionType = solution[sol].replace(/^\s+|\s+$/g, ""), //trim + checkingHtml = solutionType === 'html', + checkingFlash = solutionType === 'flash', + mediaElem; + + for(var fmt = 0; fmt < supplied.length; fmt++) { + mediaType = supplied[fmt].replace(/^\s+|\s+$/g, ""); //trim + if(format[mediaType]) { // Check format is valid. + + // Create an HTML5 media element for the type of media. + if(!mediaElem && checkingHtml) { + mediaElem = document.createElement(format[mediaType].media); + } + // See if the HTML5 media element can play the MIME / Codec type. + // Flash also returns the object if the format is playable, so it is truethy, but that html property is false. + // This assumes Flash is available, but that should be dealt with by jPlayer if that happens. + var htmlCanPlay = !!(mediaElem && mediaElem.canPlayType && mediaElem.canPlayType(format[mediaType].codec)), + htmlWillPlay = htmlCanPlay && checkingHtml, + flashWillPlay = format[mediaType].flashCanPlay && checkingFlash; + // The first one found will match what jPlayer uses. + if(htmlWillPlay || flashWillPlay) { + rVal = { + html: htmlWillPlay, + type: mediaType + }; + sol = solution.length; // Exit solution loop + fmt = supplied.length; // Exit supplied loop + } + } + } + } + } + } + return rVal; + }, + // _setup: function( options ) { // Warning: options is deprecated. + _setup: function() { + var media = this, + myPlayer, // The jQuery selector of the jPlayer element. Usually a
    + jPlayerObj, // The jPlayer data instance. For performance and DRY code. + mediaType = 'unknown', + jpMedia = {}, + jpOptions = {}, + ready = false, // Used during init to override the annoying duration dependance in the track event padding during Popcorn's isReady(). ie., We is ready after loadeddata and duration can then be set real value at leisure. + duration = 0, // For the durationchange event with both HTML5 and Flash solutions. Used with 'ready' to keep control during the Popcorn isReady() via loadeddata event. (Duration=0 is bad.) + durationchangeId = null, // A timeout ID used with delayed durationchange event. (Because of the duration=NaN fudge to avoid Popcorn track event corruption.) + canplaythrough = false, + error = null, // The MediaError object. + + dispatchDurationChange = function() { + if(ready) { + if(DEBUG) console.log('Dispatched event : durationchange : ' + duration); + media.dispatchEvent('durationchange'); + } else { + if(DEBUG) console.log('DELAYED EVENT (!ready) : durationchange : ' + duration); + clearTimeout(durationchangeId); // Stop multiple triggers causing multiple timeouts running in parallel. + durationchangeId = setTimeout(dispatchDurationChange, 250); + } + }, + + jPlayerFlashEventsPatch = function() { + + /* Events already supported by jPlayer Flash: + * loadstart + * loadedmetadata (M4A, M4V) + * progress + * play + * pause + * seeking + * seeked + * timeupdate + * ended + * volumechange + * error <- See the custom handler in jPlayerInit() + */ + + /* Events patched: + * loadeddata + * durationchange + * canplaythrough + * playing + */ + + /* Events NOT patched: + * suspend + * abort + * emptied + * stalled + * loadedmetadata (MP3) + * waiting + * canplay + * ratechange + */ + + // Triggering patched events through the jPlayer Object so the events are homogeneous. ie., The contain the event.jPlayer data structure. + + var checkDuration = function(event) { + if(event.jPlayer.status.duration !== duration) { + duration = event.jPlayer.status.duration; + dispatchDurationChange(); + } + }, + + checkCanPlayThrough = function(event) { + if(!canplaythrough && event.jPlayer.status.seekPercent === 100) { + canplaythrough = true; + setTimeout(function() { + if(DEBUG) console.log('Trigger : canplaythrough'); + jPlayerObj._trigger($.jPlayer.event.canplaythrough); + }, 0); + } + }; + + myPlayer.bind($.jPlayer.event.loadstart, function() { + setTimeout(function() { + if(DEBUG) console.log('Trigger : loadeddata'); + jPlayerObj._trigger($.jPlayer.event.loadeddata); + }, 0); + }) + .bind($.jPlayer.event.progress, function(event) { + checkDuration(event); + checkCanPlayThrough(event); + }) + .bind($.jPlayer.event.timeupdate, function(event) { + checkDuration(event); + checkCanPlayThrough(event); + }) + .bind($.jPlayer.event.play, function() { + setTimeout(function() { + if(DEBUG) console.log('Trigger : playing'); + jPlayerObj._trigger($.jPlayer.event.playing); + }, 0); + }); + + if(DEBUG) console.log('Created CUSTOM event handlers for FLASH'); + }, + + jPlayerInit = function() { + (function($) { + + myPlayer = $('#' + media.id); + + if(typeof media.src === 'string') { + mediaType = getMediaType(media.src); + jpMedia[mediaType] = media.src; + jpOptions.supplied = mediaType; + jpOptions.solution = SOLUTION; + } else if(isObject(media.src)) { + jpMedia = isObject(media.src.media) ? media.src.media : {}; + jpOptions = isObject(media.src.options) ? media.src.options : {}; + jpOptions.solution = jpOptions.solution || SOLUTION; + jpOptions.supplied = jpOptions.supplied || getSupplied(media.src.media); + } + + // Allow the swfPath to be set to local server. ie., If the jPlayer Plugin is local and already on the page, then you can also use the local SWF. + jpOptions.swfPath = jpOptions.swfPath || JPLAYER_SWFPATH; + + myPlayer.bind($.jPlayer.event.ready, function(event) { + if(event.jPlayer.flash.used) { + jPlayerFlashEventsPatch(); + } + // Set the media andd load it, so that the Flash solution behaves similar to HTML5 solution. + // This also allows the loadstart event to be used to know jPlayer is ready. + $(this).jPlayer('setMedia', jpMedia).jPlayer('load'); + }); + + // Do not auto-bubble the reserved events, nor the loadeddata and durationchange event, since the duration must be carefully handled when loadeddata event occurs. + // See the duration property code for more details. (Ranting.) + + var reservedEvents = $.jPlayer.reservedEvent + ' loadeddata durationchange', + reservedEvent = reservedEvents.split(/\s+/g); + + // Generate event handlers for all the standard HTML5 media events. (Except durationchange) + + var bindEvent = function(name) { + myPlayer.bind($.jPlayer.event[name], function(event) { + if(DEBUG) console.log('Dispatched event: ' + name + (event && event.jPlayer ? ' (' + event.jPlayer.status.currentTime + 's)' : '')); // Must be after dispatch for some reason on Firefox/Opera + media.dispatchEvent(name); + }); + if(DEBUG) console.log('Created event handler for: ' + name); + }; + + for(var eventName in $.jPlayer.event) { + if($.jPlayer.event.hasOwnProperty(eventName)) { + var nativeEvent = true; + for(var iRes in reservedEvent) { + if(reservedEvent.hasOwnProperty(iRes)) { + if(reservedEvent[iRes] === eventName) { + nativeEvent = false; + break; + } + } + } + if(nativeEvent) { + bindEvent(eventName); + } else { + if(DEBUG) console.log('Skipped auto event handler creation for: ' + eventName); + } + } + } + + myPlayer.bind($.jPlayer.event.loadeddata, function(event) { + if(DEBUG) console.log('Dispatched event: loadeddata' + (event && event.jPlayer ? ' (' + event.jPlayer.status.currentTime + 's)' : '')); + media.dispatchEvent('loadeddata'); + ready = true; + }); + if(DEBUG) console.log('Created CUSTOM event handler for: loadeddata'); + + myPlayer.bind($.jPlayer.event.durationchange, function(event) { + duration = event.jPlayer.status.duration; + dispatchDurationChange(); + }); + if(DEBUG) console.log('Created CUSTOM event handler for: durationchange'); + + // The error event is a special case. Plus jPlayer error event assumes it is a broken URL. (It could also be a decoder error... Or aborted or a Network error.) + myPlayer.bind($.jPlayer.event.error, function(event) { + // Not sure how to handle the error situation. Popcorn does not appear to have the error or error.code property documented here: http://popcornjs.org/popcorn-docs/media-methods/ + // If any error event happens, then something has gone pear shaped. + + error = event.jPlayer.error; // Saving object pointer, not a copy of the object. Possible garbage collection issue... But the player is dead anyway, so don't care. + + if(error.type === $.jPlayer.error.URL) { + error.code = 4; // MEDIA_ERR_SRC_NOT_SUPPORTED since jPlayer makes this assumption. It is the most common error, then the decode error. Never seen either of the other 2 error types occur. + } else { + error.code = 0; // It was a jPlayer error, not an HTML5 media error. + } + + if(DEBUG) console.log('Dispatched event: error'); + if(DEBUG) console.dir(error); + media.dispatchEvent('error'); + }); + if(DEBUG) console.log('Created CUSTOM event handler for: error'); + + Popcorn.player.defineProperty( media, 'error', { + set: function() { + // Read-only property + return error; + }, + get: function() { + return error; + } + }); + + Popcorn.player.defineProperty( media, 'currentTime', { + set: function( val ) { + if(jPlayerObj.status.paused) { + myPlayer.jPlayer('pause', val); + } else { + myPlayer.jPlayer('play', val); + } + return val; + }, + get: function() { + return jPlayerObj.status.currentTime; + } + }); + + /* The joy of duration and the loadeddata event isReady() handler + * The duration is assumed to be a NaN or a valid duration. + * jPlayer uses zero instead of a NaN and this screws up the Popcorn track event start/end arrays padding. + * This line here: + * videoDurationPlus = duration != duration ? Number.MAX_VALUE : duration + 1; + * Not sure why it is not simply: + * videoDurationPlus = Number.MAX_VALUE; // Who cares if the padding is close to the real duration? + * So if you trigger loadeddata before the duration is correct, the track event padding is screwed up. (It pads the start, not the end... Well, duration+1 = 0+1 = 1s) + * That line makes the MP3 Flash fallback difficult to setup. The whole MP3 will need to load before the duration is known. + * Planning on using a NaN for duration until a >0 value is found... Except with MP3, where seekPercent must be 100% before setting the duration. + * Why not just use a NaN during init... And then correct the duration later? + */ + + Popcorn.player.defineProperty( media, 'duration', { + set: function() { + // Read-only property + if(ready) { + return duration; + } else { + return NaN; + } + }, + get: function() { + if(ready) { + return duration; // Popcorn has initialized, we can now use duration zero or whatever without fear. + } else { + return NaN; // Keep the duration a NaN until after loadeddata event has occurred. Otherwise Popcorn track event padding is corrupted. + } + } + }); + + Popcorn.player.defineProperty( media, 'muted', { + set: function( val ) { + myPlayer.jPlayer('mute', val); + return jPlayerObj.options.muted; + }, + get: function() { + return jPlayerObj.options.muted; + } + }); + + Popcorn.player.defineProperty( media, 'volume', { + set: function( val ) { + myPlayer.jPlayer('volume', val); + return jPlayerObj.options.volume; + }, + get: function() { + return jPlayerObj.options.volume; + } + }); + + Popcorn.player.defineProperty( media, 'paused', { + set: function() { + // Read-only property + return jPlayerObj.status.paused; + }, + get: function() { + return jPlayerObj.status.paused; + } + }); + + media.play = function() { + myPlayer.jPlayer('play'); + }; + media.pause = function() { + myPlayer.jPlayer('pause'); + }; + + myPlayer.jPlayer(jpOptions); // Instance jPlayer. Note that the options should not have a ready event defined... Kill it by default? + jPlayerObj = myPlayer.data('jPlayer'); + + }(jQuery)); + }, + + jPlayerCheck = function() { + if (!jQuery.jPlayer) { + if (!jPlayerDownloading) { + jPlayerDownloading = true; + Popcorn.getScript(JPLAYER_SCRIPT, function() { + jPlayerDownloading = false; + jPlayerInit(); + }); + } else { + setTimeout(jPlayerCheck, 250); + } + } else { + jPlayerInit(); + } + }, + + jQueryCheck = function() { + if (!window.jQuery) { + if (!jQueryDownloading) { + jQueryDownloading = true; + Popcorn.getScript(JQUERY_SCRIPT, function() { + jQueryDownloading = false; + jPlayerCheck(); + }); + } else { + setTimeout(jQueryCheck, 250); + } + } else { + jPlayerCheck(); + } + }; + + jQueryCheck(); + }, + _teardown: function() { + jQuery('#' + this.id).jPlayer('destroy'); + } + }); + +}(Popcorn)); \ No newline at end of file diff --git a/media/jplayer/popcorn/popcorn.jplayer.min.js b/media/jplayer/popcorn/popcorn.jplayer.min.js new file mode 100644 index 00000000..9b69a139 --- /dev/null +++ b/media/jplayer/popcorn/popcorn.jplayer.min.js @@ -0,0 +1,2 @@ +/*! Popcorn Player for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ +!function(a){var b="//code.jquery.com/jquery-1.11.1.min.js",c="//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.min.js",d="//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.swf",e="html,flash",f=!1,g=!1,h=!1,i={mp3:{codec:"audio/mpeg",flashCanPlay:!0,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:!0,media:"audio"},m3u8a:{codec:'application/vnd.apple.mpegurl; codecs="mp4a.40.2"',flashCanPlay:!1,media:"audio"},m3ua:{codec:"audio/mpegurl",flashCanPlay:!1,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis, opus"',flashCanPlay:!1,media:"audio"},flac:{codec:"audio/x-flac",flashCanPlay:!1,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:!1,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:!1,media:"audio"},fla:{codec:"audio/x-flv",flashCanPlay:!0,media:"audio"},rtmpa:{codec:'audio/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!0,media:"video"},m3u8v:{codec:'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!1,media:"video"},m3uv:{codec:"audio/mpegurl",flashCanPlay:!1,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',flashCanPlay:!1,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:!1,media:"video"},flv:{codec:"video/x-flv",flashCanPlay:!0,media:"video"},rtmpv:{codec:'video/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"video"}},j=function(a){return a&&"object"==typeof a&&a.hasOwnProperty?!0:!1},k=function(a){var b=!1;return/\.mp3$/i.test(a)?b="mp3":/\.mp4$/i.test(a)||/\.m4v$/i.test(a)?b="m4v":/\.m4a$/i.test(a)?b="m4a":/\.ogg$/i.test(a)||/\.oga$/i.test(a)?b="oga":/\.ogv$/i.test(a)?b="ogv":/\.webm$/i.test(a)&&(b="webmv"),b},l=function(a){var b="",c="";if(j(a))for(var d in a)a.hasOwnProperty(d)&&(b+=c+d,c=",");return f&&console.log('getSupplied(): Generated: supplied = "'+b+'"'),b};a.player("jplayer",{_canPlayType:function(a,b){var c,d=a.toLowerCase(),f={media:{},options:{}},g=!1;if("video"!==d&&"audio"!==d&&("string"==typeof b?/^http.*/i.test(b)&&(c=k(b),c&&(f.media[c]=b,f.options.solution=e,f.options.supplied=c)):f=b,j(f)&&j(f.media))){j(f.options)||(f.options={}),f.options.solution||(f.options.solution=e),f.options.supplied||(f.options.supplied=l(f.media));for(var h=f.options.solution.toLowerCase().split(","),m=f.options.supplied.toLowerCase().split(","),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 I?Z5i}0Xq{#rvLx| literal 0 HcmV?d00001 diff --git a/media/jplayer/skin/blue.monday/image/jplayer.blue.monday.seeking.gif b/media/jplayer/skin/blue.monday/image/jplayer.blue.monday.seeking.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbd2105ab933f0336e1f732e32a54c6d6a8e1441 GIT binary patch literal 3284 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 literal 0 HcmV?d00001 diff --git a/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html new file mode 100644 index 00000000..2c2d2dd0 --- /dev/null +++ b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html @@ -0,0 +1,42 @@ + + diff --git a/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html new file mode 100644 index 00000000..3b3341fe --- /dev/null +++ b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html @@ -0,0 +1,37 @@ + + diff --git a/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html new file mode 100644 index 00000000..efeb5048 --- /dev/null +++ b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html @@ -0,0 +1,24 @@ + + diff --git a/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html new file mode 100644 index 00000000..7ffc474e --- /dev/null +++ b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html @@ -0,0 +1,52 @@ + diff --git a/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html new file mode 100644 index 00000000..c9a16f83 --- /dev/null +++ b/media/jplayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html @@ -0,0 +1,43 @@ + diff --git a/media/jplayer/skin/pink.flag/css/jplayer.pink.flag.css b/media/jplayer/skin/pink.flag/css/jplayer.pink.flag.css new file mode 100644 index 00000000..8703b18d --- /dev/null +++ b/media/jplayer/skin/pink.flag/css/jplayer.pink.flag.css @@ -0,0 +1,572 @@ +/*! Pink Flag Skin for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ + +/* + * Skin for jPlayer Plugin (jQuery JavaScript Library) + * http://www.jplayer.org + * + * Skin Name: Pink Flag + * + * Copyright (c) 2012 - 2014 Happyworm Ltd + * Licensed under the MIT license. + * - http://www.opensource.org/licenses/mit-license.php + * + * Author: Silvia Benvenuti + * Skin Version: 2.1 (jPlayer 2.8.0) + * Date: 13th November 2014 + */ +.jp-audio *:focus, +.jp-audio-stream *:focus, +.jp-video *:focus { + /* Disable the browser focus highlighting. */ + outline: none; } + +.jp-audio button::-moz-focus-inner, +.jp-audio-stream button::-moz-focus-inner, +.jp-video button::-moz-focus-inner { + /* Disable the browser CSS3 focus highlighting. */ + border: 0; } + +.jp-audio, +.jp-audio-stream, +.jp-video { + font-size: 16px; + font-family: Verdana, Arial, sans-serif; + line-height: 1.6; + color: #fff; + border-top: 1px solid #554461; + border-left: 1px solid #554461; + border-right: 1px solid #180a1f; + border-bottom: 1px solid #180a1f; + background-color: #3a2a45; } + +.jp-audio { + width: 201px; + padding: 20px; } + +.jp-audio-stream { + width: 101px; + padding: 20px 20px 10px 20px; } + +.jp-video-270p { + width: 480px; } + +.jp-video-360p { + width: 640px; } + +.jp-video-full { + /* Rules for IE6 (full-screen) */ + width: 480px; + height: 270px; + /* Rules for IE7 (full-screen) - Otherwise the relative container causes other page items that are not position:static (default) to appear over the video/gui. */ + position: static !important; + position: relative; } + +/* The z-index rule is defined in this manner to enable Popcorn plugins that add overlays to video area. EG. Subtitles. */ +.jp-video-full div div { + z-index: 1000; } + +.jp-video-full .jp-jplayer { + top: 0; + left: 0; + position: fixed !important; + position: relative; + /* Rules for IE6 (full-screen) */ + overflow: hidden; } + +.jp-video-full .jp-gui { + position: fixed !important; + position: static; + /* Rules for IE6 (full-screen) */ + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1001; + /* 1 layer above the others. */ } + +.jp-video-full .jp-interface { + position: absolute !important; + position: relative; + /* Rules for IE6 (full-screen) */ + bottom: 0; + left: 0; } + +.jp-interface { + position: relative; + width: 100%; + background-color: #3a2a45; + /* Required for the full screen */ } + +/* @group CONTROLS */ +.jp-video .jp-controls-holder { + clear: both; + width: 440px; + margin: 0 auto 10px auto; + position: relative; + overflow: hidden; } + +.jp-audio .jp-controls-holder { + height: 80px; } + +.jp-audio-stream .jp-controls-holder { + height: 50px; } + +.jp-controls { + background: url("../image/jplayer.pink.flag.jpg") 0 0 no-repeat; + padding: 1px 0 2px 1px; + overflow: hidden; + width: 201px; + height: 34px; } + +.jp-audio .jp-controls, +.jp-audio-stream .jp-controls { + margin: 0 auto; } + +.jp-audio-stream .jp-controls { + width: 100px; } + +.jp-video .jp-controls { + margin: 0 0 0 115px; + float: left; + display: inline; + /* need this to fix IE6 double margin */ } + +.jp-controls button { + display: block; + float: left; + overflow: hidden; + text-indent: -9999px; + height: 34px; + margin: 0 1px 2px 0; + padding: 0; + border: none; + cursor: pointer; } + +/* @group single player controls */ +.jp-type-single .jp-controls button { + width: 99px; } + +.jp-type-single .jp-play { + background: url("../image/jplayer.pink.flag.jpg") 0px -40px no-repeat; } + +.jp-type-single .jp-play:focus { + background: url("../image/jplayer.pink.flag.jpg") -100px -40px no-repeat; } + +.jp-state-playing .jp-type-single .jp-play { + background: url("../image/jplayer.pink.flag.jpg") 0px -120px no-repeat; } + +.jp-state-playing .jp-type-single .jp-play:focus { + background: url("../image/jplayer.pink.flag.jpg") -100px -120px no-repeat; } + +/* The right border is normally in the ul background image. */ +.jp-audio-stream .jp-play, +.jp-audio-stream .jp-pause { + border-right: 1px solid #180920; } + +.jp-type-single .jp-stop { + background: url("../image/jplayer.pink.flag.jpg") 0px -80px no-repeat; } + +.jp-type-single .jp-stop:focus { + background: url("../image/jplayer.pink.flag.jpg") -100px -80px no-repeat; } + +/* @end */ +/* @group playlist player controls */ +.jp-type-playlist .jp-controls button { + width: 49px; } + +.jp-type-playlist .jp-play { + background: url("../image/jplayer.pink.flag.jpg") -24px -40px no-repeat; } + +.jp-type-playlist .jp-play:focus { + background: url("../image/jplayer.pink.flag.jpg") -124px -40px no-repeat; } + +.jp-state-playing div.jp-type-playlist .jp-play { + background: url("../image/jplayer.pink.flag.jpg") -24px -120px no-repeat; } + +.jp-state-playing div.jp-type-playlist .jp-play:focus { + background: url("../image/jplayer.pink.flag.jpg") -124px -120px no-repeat; } + +.jp-type-playlist .jp-stop { + background: url("../image/jplayer.pink.flag.jpg") -24px -80px no-repeat; } + +.jp-type-playlist .jp-stop:focus { + background: url("../image/jplayer.pink.flag.jpg") -124px -80px no-repeat; } + +.jp-type-playlist .jp-previous { + background: url("../image/jplayer.pink.flag.jpg") -24px -200px no-repeat; } + +.jp-type-playlist .jp-previous:focus { + background: url("../image/jplayer.pink.flag.jpg") -124px -200px no-repeat; } + +.jp-type-playlist .jp-next { + background: url("../image/jplayer.pink.flag.jpg") -24px -160px no-repeat; } + +.jp-type-playlist .jp-next:focus { + background: url("../image/jplayer.pink.flag.jpg") -124px -160px no-repeat; } + +/* @end */ +/* @group TOGGLES */ +.jp-toggles { + padding: 0; + margin: 0 auto; + overflow: hidden; } + +.jp-audio .jp-toggles { + width: 55px; } + +.jp-audio .jp-type-single .jp-toggles { + width: 25px; } + +.jp-video .jp-toggles { + float: left; + width: 105px; + margin: 10px 0 0 15px; } + +.jp-toggles button { + display: block; + float: left; + width: 25px; + height: 18px; + text-indent: -9999px; + line-height: 100%; + /* need this for IE6 */ + border: none; + cursor: pointer; } + +.jp-full-screen { + background: url("../image/jplayer.pink.flag.jpg") 0 -420px no-repeat; + margin-left: 15px; } + +.jp-full-screen:focus { + background: url("../image/jplayer.pink.flag.jpg") -30px -420px no-repeat; } + +.jp-state-full-screen .jp-full-screen { + background: url("../image/jplayer.pink.flag.jpg") -60px -420px no-repeat; } + +.jp-state-full-screen .jp-full-screen:focus { + background: url("../image/jplayer.pink.flag.jpg") -90px -420px no-repeat; } + +.jp-repeat { + background: url("../image/jplayer.pink.flag.jpg") 0 -440px no-repeat; + margin-left: 0; } + +.jp-repeat:focus { + background: url("../image/jplayer.pink.flag.jpg") -30px -440px no-repeat; } + +.jp-state-looped .jp-repeat { + background: url("../image/jplayer.pink.flag.jpg") -60px -440px no-repeat; } + +.jp-state-looped .jp-repeat:focus { + background: url("../image/jplayer.pink.flag.jpg") -90px -440px no-repeat; } + +.jp-shuffle { + background: url("../image/jplayer.pink.flag.jpg") 0 -460px no-repeat; + margin-left: 15px; } + +.jp-shuffle:focus { + background: url("../image/jplayer.pink.flag.jpg") -30px -460px no-repeat; } + +.jp-state-shuffled .jp-shuffle { + background: url("../image/jplayer.pink.flag.jpg") -60px -460px no-repeat; } + +.jp-state-shuffled .jp-shuffle:focus { + background: url("../image/jplayer.pink.flag.jpg") -90px -460px no-repeat; } + +.jp-audio .jp-shuffle { + margin-left: 5px; } + +/* @end */ +/* @group progress bar */ +/* The seeking class is added/removed inside jPlayer */ +div.jp-seeking-bg { + background: url("../image/jplayer.pink.flag.seeking.gif"); } + +.jp-progress { + background: url("../image/jplayer.pink.flag.jpg") 0px -240px no-repeat; + width: 197px; + height: 13px; + padding: 0 2px 2px 2px; + margin-bottom: 4px; + overflow: hidden; } + +div.jp-video .jp-progress { + border-top: 1px solid #180a1f; + border-bottom: 1px solid #554560; + width: 100%; + background-image: none; + padding: 0; } + +.jp-seek-bar { + background: url("../image/jplayer.pink.flag.jpg") 0px -260px repeat-x; + width: 0px; + height: 100%; + overflow: hidden; + cursor: pointer; } + +.jp-play-bar { + background: url("../image/jplayer.pink.flag.jpg") 0px -280px repeat-x; + width: 0px; + height: 100%; + overflow: hidden; } + +/* @end */ +/* @group volume controls */ +.jp-state-no-volume .jp-volume-controls { + display: none; } + +.jp-audio .jp-volume-controls, +.jp-audio-stream .jp-volume-controls { + height: 30px; } + +.jp-volume-controls button { + position: absolute; + display: block; + overflow: hidden; + text-indent: -9999px; + margin: 0; + padding: 0; + width: 16px; + height: 11px; + border: none; + cursor: pointer; } + +.jp-audio .jp-volume-controls .jp-mute, +.jp-audio-stream .jp-volume-controls .jp-mute { + top: -6px; + left: 0; } + +.jp-audio .jp-volume-controls .jp-volume-max, +.jp-audio-stream .jp-volume-controls .jp-volume-max { + top: -6px; + right: 0; } + +.jp-video .jp-volume-controls .jp-mute, +.jp-video .jp-volume-controls .jp-unmute { + left: 0; + top: 14px; } + +.jp-video .jp-volume-controls .jp-volume-max { + left: 84px; + top: 14px; } + +.jp-volume-controls .jp-mute { + background: url("../image/jplayer.pink.flag.jpg") 0px -330px no-repeat; } + +.jp-volume-controls .jp-mute:focus { + background: url("../image/jplayer.pink.flag.jpg") -25px -330px no-repeat; } + +.jp-state-muted .jp-volume-controls .jp-mute { + background: url("../image/jplayer.pink.flag.jpg") -60px -330px no-repeat; } + +.jp-state-muted .jp-volume-controls .jp-mute:focus { + background: url("../image/jplayer.pink.flag.jpg") -85px -330px no-repeat; } + +.jp-volume-controls .jp-volume-max { + background: url("../image/jplayer.pink.flag.jpg") 0px -350px no-repeat; } + +.jp-volume-controls .jp-volume-max:focus { + background: url("../image/jplayer.pink.flag.jpg") -25px -350px no-repeat; } + +.jp-volume-bar { + background: url("../image/jplayer.pink.flag.jpg") 0px -300px repeat-x; + position: absolute; + width: 197px; + height: 4px; + padding: 2px 2px 1px 2px; + overflow: hidden; + cursor: pointer; } + +.jp-audio .jp-interface .jp-volume-bar, +.jp-audio-stream .jp-interface .jp-volume-bar { + top: 10px; + left: 0; } + +.jp-audio-stream .jp-interface .jp-volume-bar { + width: 97px; + border-right: 1px solid #180920; + padding-right: 1px; } + +.jp-video .jp-volume-bar { + top: 0; + left: 0; + width: 95px; + border-right: 1px solid #180920; + padding-right: 1px; + margin-top: 30px; } + +.jp-volume-bar-value { + background: url("../image/jplayer.pink.flag.jpg") 0px -320px repeat-x; + height: 4px; } + +/* @end */ +/* @group current time and duration */ +.jp-current-time, .jp-duration { + width: 70px; + font-size: .5em; + color: #8c7a99; } + +.jp-current-time { + float: left; + cursor: default; } + +.jp-duration { + float: right; + text-align: right; + cursor: pointer; } + +.jp-video .jp-current-time { + padding-left: 20px; } + +.jp-video .jp-duration { + padding-right: 20px; } + +/* @end */ +/* @group playlist */ +.jp-details { + font-size: .7em; + margin: 0; + padding: 0; } + +.jp-details .jp-title { + padding: 0; + margin: 0; + overflow: hidden; + text-align: center; + cursor: default; } + +.jp-video .jp-details { + margin: 0 90px 10px; } + +.jp-playlist ul { + list-style-type: none; + font-size: .7em; + margin: 0; + padding: 0; } + +.jp-video .jp-playlist ul { + margin: 0 20px; } + +.jp-playlist li { + position: relative; + padding: 2px 0; + border-top: 1px solid #554461; + border-bottom: 1px solid #180a1f; + overflow: hidden; } + +/* Note that the first-child (IE6) and last-child (IE6/7/8) selectors do not work on IE */ +div.jp-type-playlist div.jp-playlist li:first-child { + border-top: none; + padding-top: 3px; } + +div.jp-type-playlist div.jp-playlist li:last-child { + border-bottom: none; + padding-bottom: 3px; } + +div.jp-type-playlist div.jp-playlist a { + color: #fff; + text-decoration: none; } + +div.jp-type-playlist div.jp-playlist a:hover { + color: #e892e9; } + +div.jp-type-playlist div.jp-playlist li.jp-playlist-current { + background-color: #26102e; + margin: 0 -20px; + padding: 2px 20px; + border-top: 1px solid #26102e; + border-bottom: 1px solid #26102e; } + +div.jp-type-playlist div.jp-playlist li.jp-playlist-current a { + color: #e892e9; } + +div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove { + float: right; + display: inline; + text-align: right; + margin-left: 10px; + font-weight: bold; + color: #8C7A99; } + +div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove:hover { + color: #E892E9; } + +div.jp-type-playlist div.jp-playlist span.jp-free-media { + float: right; + display: inline; + text-align: right; + color: #8C7A99; } + +div.jp-type-playlist div.jp-playlist span.jp-free-media a { + color: #8C7A99; } + +div.jp-type-playlist div.jp-playlist span.jp-free-media a:hover { + color: #E892E9; } + +span.jp-artist { + font-size: .8em; + color: #8C7A99; } + +/* @end */ +.jp-video .jp-video-play { + width: 100%; + overflow: hidden; + /* Important for nested negative margins to work in modern browsers */ } + +.jp-video-270p .jp-video-play { + margin-top: -270px; + height: 270px; } + +.jp-video-360p .jp-video-play { + margin-top: -360px; + height: 360px; } + +.jp-video-full .jp-video-play { + height: 100%; } + +.jp-video-play-icon { + position: relative; + display: block; + width: 112px; + height: 100px; + margin-left: -56px; + margin-top: -50px; + left: 50%; + top: 50%; + border: none; + cursor: pointer; + background: url("../image/jplayer.pink.flag.video.play.png") 0 0 no-repeat; + text-indent: -9999px; } + +.jp-video-play-icon:focus { + background: url("../image/jplayer.pink.flag.video.play.png") 0 -100px no-repeat; } + +.jp-jplayer audio, +.jp-jplayer { + width: 0px; + height: 0px; } + +.jp-jplayer { + background-color: #000000; } + +/* @group NO SOLUTION error feedback */ +.jp-no-solution { + padding: 5px; + font-size: .8em; + background-color: #3a2a45; + border-top: 2px solid #554461; + border-left: 2px solid #554461; + border-right: 2px solid #180a1f; + border-bottom: 2px solid #180a1f; + color: #FFF; + display: none; } + +.jp-no-solution a { + color: #FFF; } + +.jp-no-solution span { + font-size: 1em; + display: block; + text-align: center; + font-weight: bold; } + +/* @end */ diff --git a/media/jplayer/skin/pink.flag/css/jplayer.pink.flag.min.css b/media/jplayer/skin/pink.flag/css/jplayer.pink.flag.min.css new file mode 100644 index 00000000..7e0f6de6 --- /dev/null +++ b/media/jplayer/skin/pink.flag/css/jplayer.pink.flag.min.css @@ -0,0 +1 @@ +/*! Pink Flag Skin for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */.jp-audio :focus,.jp-audio-stream :focus,.jp-video :focus{outline:0}.jp-audio button::-moz-focus-inner,.jp-audio-stream button::-moz-focus-inner,.jp-video button::-moz-focus-inner{border:0}.jp-audio,.jp-audio-stream,.jp-video{font-size:16px;font-family:Verdana,Arial,sans-serif;line-height:1.6;color:#fff;border-top:1px solid #554461;border-left:1px solid #554461;border-right:1px solid #180a1f;border-bottom:1px solid #180a1f;background-color:#3a2a45}.jp-audio{width:201px;padding:20px}.jp-audio-stream{width:101px;padding:20px 20px 10px}.jp-video-270p{width:480px}.jp-video-360p{width:640px}.jp-video-full{width:480px;height:270px;position:static!important;position:relative}.jp-video-full div div{z-index:1000}.jp-video-full .jp-jplayer{top:0;left:0;position:fixed!important;position:relative;overflow:hidden}.jp-video-full .jp-gui{position:fixed!important;position:static;top:0;left:0;width:100%;height:100%;z-index:1001}.jp-video-full .jp-interface{position:absolute!important;position:relative;bottom:0;left:0}.jp-interface{position:relative;width:100%;background-color:#3a2a45}.jp-video .jp-controls-holder{clear:both;width:440px;margin:0 auto 10px;position:relative;overflow:hidden}.jp-audio .jp-controls-holder{height:80px}.jp-audio-stream .jp-controls-holder{height:50px}.jp-controls{background:url(../image/jplayer.pink.flag.jpg) no-repeat;padding:1px 0 2px 1px;overflow:hidden;width:201px;height:34px}.jp-audio .jp-controls,.jp-audio-stream .jp-controls{margin:0 auto}.jp-audio-stream .jp-controls{width:100px}.jp-video .jp-controls{margin:0 0 0 115px;float:left;display:inline}.jp-controls button{display:block;float:left;overflow:hidden;text-indent:-9999px;height:34px;margin:0 1px 2px 0;padding:0;border:none;cursor:pointer}.jp-type-single .jp-controls button{width:99px}.jp-type-single .jp-play{background:url(../image/jplayer.pink.flag.jpg) 0 -40px no-repeat}.jp-type-single .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -100px -40px no-repeat}.jp-state-playing .jp-type-single .jp-play{background:url(../image/jplayer.pink.flag.jpg) 0 -120px no-repeat}.jp-state-playing .jp-type-single .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -100px -120px no-repeat}.jp-audio-stream .jp-pause,.jp-audio-stream .jp-play{border-right:1px solid #180920}.jp-type-single .jp-stop{background:url(../image/jplayer.pink.flag.jpg) 0 -80px no-repeat}.jp-type-single .jp-stop:focus{background:url(../image/jplayer.pink.flag.jpg) -100px -80px no-repeat}.jp-type-playlist .jp-controls button{width:49px}.jp-type-playlist .jp-play{background:url(../image/jplayer.pink.flag.jpg) -24px -40px no-repeat}.jp-type-playlist .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -40px no-repeat}.jp-state-playing div.jp-type-playlist .jp-play{background:url(../image/jplayer.pink.flag.jpg) -24px -120px no-repeat}.jp-state-playing div.jp-type-playlist .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -120px no-repeat}.jp-type-playlist .jp-stop{background:url(../image/jplayer.pink.flag.jpg) -24px -80px no-repeat}.jp-type-playlist .jp-stop:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -80px no-repeat}.jp-type-playlist .jp-previous{background:url(../image/jplayer.pink.flag.jpg) -24px -200px no-repeat}.jp-type-playlist .jp-previous:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -200px no-repeat}.jp-type-playlist .jp-next{background:url(../image/jplayer.pink.flag.jpg) -24px -160px no-repeat}.jp-type-playlist .jp-next:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -160px no-repeat}.jp-toggles{padding:0;margin:0 auto;overflow:hidden}.jp-audio .jp-toggles{width:55px}.jp-audio .jp-type-single .jp-toggles{width:25px}.jp-video .jp-toggles{float:left;width:105px;margin:10px 0 0 15px}.jp-toggles button{display:block;float:left;width:25px;height:18px;text-indent:-9999px;line-height:100%;border:none;cursor:pointer}.jp-full-screen{background:url(../image/jplayer.pink.flag.jpg) 0 -420px no-repeat;margin-left:15px}.jp-full-screen:focus{background:url(../image/jplayer.pink.flag.jpg) -30px -420px no-repeat}.jp-state-full-screen .jp-full-screen{background:url(../image/jplayer.pink.flag.jpg) -60px -420px no-repeat}.jp-state-full-screen .jp-full-screen:focus{background:url(../image/jplayer.pink.flag.jpg) -90px -420px no-repeat}.jp-repeat{background:url(../image/jplayer.pink.flag.jpg) 0 -440px no-repeat;margin-left:0}.jp-repeat:focus{background:url(../image/jplayer.pink.flag.jpg) -30px -440px no-repeat}.jp-state-looped .jp-repeat{background:url(../image/jplayer.pink.flag.jpg) -60px -440px no-repeat}.jp-state-looped .jp-repeat:focus{background:url(../image/jplayer.pink.flag.jpg) -90px -440px no-repeat}.jp-shuffle{background:url(../image/jplayer.pink.flag.jpg) 0 -460px no-repeat;margin-left:15px}.jp-shuffle:focus{background:url(../image/jplayer.pink.flag.jpg) -30px -460px no-repeat}.jp-state-shuffled .jp-shuffle{background:url(../image/jplayer.pink.flag.jpg) -60px -460px no-repeat}.jp-state-shuffled .jp-shuffle:focus{background:url(../image/jplayer.pink.flag.jpg) -90px -460px no-repeat}.jp-audio .jp-shuffle{margin-left:5px}div.jp-seeking-bg{background:url(../image/jplayer.pink.flag.seeking.gif)}.jp-progress{background:url(../image/jplayer.pink.flag.jpg) 0 -240px no-repeat;width:197px;height:13px;padding:0 2px 2px;margin-bottom:4px;overflow:hidden}div.jp-video .jp-progress{border-top:1px solid #180a1f;border-bottom:1px solid #554560;width:100%;background-image:none;padding:0}.jp-seek-bar{background:url(../image/jplayer.pink.flag.jpg) 0 -260px repeat-x;width:0;height:100%;overflow:hidden;cursor:pointer}.jp-play-bar{background:url(../image/jplayer.pink.flag.jpg) 0 -280px repeat-x;width:0;height:100%;overflow:hidden}.jp-state-no-volume .jp-volume-controls{display:none}.jp-audio .jp-volume-controls,.jp-audio-stream .jp-volume-controls{height:30px}.jp-volume-controls button{position:absolute;display:block;overflow:hidden;text-indent:-9999px;margin:0;padding:0;width:16px;height:11px;border:none;cursor:pointer}.jp-audio .jp-volume-controls .jp-mute,.jp-audio-stream .jp-volume-controls .jp-mute{top:-6px;left:0}.jp-audio .jp-volume-controls .jp-volume-max,.jp-audio-stream .jp-volume-controls .jp-volume-max{top:-6px;right:0}.jp-video .jp-volume-controls .jp-mute,.jp-video .jp-volume-controls .jp-unmute{left:0;top:14px}.jp-video .jp-volume-controls .jp-volume-max{left:84px;top:14px}.jp-volume-controls .jp-mute{background:url(../image/jplayer.pink.flag.jpg) 0 -330px no-repeat}.jp-volume-controls .jp-mute:focus{background:url(../image/jplayer.pink.flag.jpg) -25px -330px no-repeat}.jp-state-muted .jp-volume-controls .jp-mute{background:url(../image/jplayer.pink.flag.jpg) -60px -330px no-repeat}.jp-state-muted .jp-volume-controls .jp-mute:focus{background:url(../image/jplayer.pink.flag.jpg) -85px -330px no-repeat}.jp-volume-controls .jp-volume-max{background:url(../image/jplayer.pink.flag.jpg) 0 -350px no-repeat}.jp-volume-controls .jp-volume-max:focus{background:url(../image/jplayer.pink.flag.jpg) -25px -350px no-repeat}.jp-volume-bar{background:url(../image/jplayer.pink.flag.jpg) 0 -300px repeat-x;position:absolute;width:197px;height:4px;padding:2px 2px 1px;overflow:hidden;cursor:pointer}.jp-audio .jp-interface .jp-volume-bar,.jp-audio-stream .jp-interface .jp-volume-bar{top:10px;left:0}.jp-audio-stream .jp-interface .jp-volume-bar{width:97px;border-right:1px solid #180920;padding-right:1px}.jp-video .jp-volume-bar{top:0;left:0;width:95px;border-right:1px solid #180920;padding-right:1px;margin-top:30px}.jp-volume-bar-value{background:url(../image/jplayer.pink.flag.jpg) 0 -320px repeat-x;height:4px}.jp-current-time,.jp-duration{width:70px;font-size:.5em;color:#8c7a99}.jp-current-time{float:left;cursor:default}.jp-duration{float:right;text-align:right;cursor:pointer}.jp-video .jp-current-time{padding-left:20px}.jp-video .jp-duration{padding-right:20px}.jp-details{font-size:.7em;margin:0;padding:0}.jp-details .jp-title{padding:0;margin:0;overflow:hidden;text-align:center;cursor:default}.jp-video .jp-details{margin:0 90px 10px}.jp-playlist ul{list-style-type:none;font-size:.7em;margin:0;padding:0}.jp-video .jp-playlist ul{margin:0 20px}.jp-playlist li{position:relative;padding:2px 0;border-top:1px solid #554461;border-bottom:1px solid #180a1f;overflow:hidden}div.jp-type-playlist div.jp-playlist li:first-child{border-top:none;padding-top:3px}div.jp-type-playlist div.jp-playlist li:last-child{border-bottom:none;padding-bottom:3px}div.jp-type-playlist div.jp-playlist a{color:#fff;text-decoration:none}div.jp-type-playlist div.jp-playlist a:hover{color:#e892e9}div.jp-type-playlist div.jp-playlist li.jp-playlist-current{background-color:#26102e;margin:0 -20px;padding:2px 20px;border-top:1px solid #26102e;border-bottom:1px solid #26102e}div.jp-type-playlist div.jp-playlist li.jp-playlist-current a{color:#e892e9}div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove{float:right;display:inline;text-align:right;margin-left:10px;font-weight:700;color:#8C7A99}div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove:hover{color:#E892E9}div.jp-type-playlist div.jp-playlist span.jp-free-media{float:right;display:inline;text-align:right;color:#8C7A99}div.jp-type-playlist div.jp-playlist span.jp-free-media a{color:#8C7A99}div.jp-type-playlist div.jp-playlist span.jp-free-media a:hover{color:#E892E9}span.jp-artist{font-size:.8em;color:#8C7A99}.jp-video .jp-video-play{width:100%;overflow:hidden}.jp-video-270p .jp-video-play{margin-top:-270px;height:270px}.jp-video-360p .jp-video-play{margin-top:-360px;height:360px}.jp-video-full .jp-video-play{height:100%}.jp-video-play-icon{position:relative;display:block;width:112px;height:100px;margin-left:-56px;margin-top:-50px;left:50%;top:50%;border:none;cursor:pointer;background:url(../image/jplayer.pink.flag.video.play.png) no-repeat;text-indent:-9999px}.jp-video-play-icon:focus{background:url(../image/jplayer.pink.flag.video.play.png) 0 -100px no-repeat}.jp-jplayer,.jp-jplayer audio{width:0;height:0}.jp-jplayer{background-color:#000}.jp-no-solution{padding:5px;font-size:.8em;background-color:#3a2a45;border-top:2px solid #554461;border-left:2px solid #554461;border-right:2px solid #180a1f;border-bottom:2px solid #180a1f;color:#FFF;display:none}.jp-no-solution a{color:#FFF}.jp-no-solution span{font-size:1em;display:block;text-align:center;font-weight:700} \ No newline at end of file diff --git a/media/jplayer/skin/pink.flag/image/jplayer.pink.flag.jpg b/media/jplayer/skin/pink.flag/image/jplayer.pink.flag.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0c084e298844644faab531e0bec15452795f14ed GIT binary patch literal 18426 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 literal 0 HcmV?d00001 diff --git a/media/jplayer/skin/pink.flag/image/jplayer.pink.flag.seeking.gif b/media/jplayer/skin/pink.flag/image/jplayer.pink.flag.seeking.gif new file mode 100644 index 0000000000000000000000000000000000000000..754ceb167377fd304f0bd596d7458277fe47265f GIT binary patch literal 3284 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 literal 0 HcmV?d00001 diff --git a/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html new file mode 100644 index 00000000..f64d5f9d --- /dev/null +++ b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html @@ -0,0 +1,42 @@ + + diff --git a/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html new file mode 100644 index 00000000..83662d71 --- /dev/null +++ b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html @@ -0,0 +1,37 @@ + + diff --git a/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html new file mode 100644 index 00000000..f16c74f2 --- /dev/null +++ b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html @@ -0,0 +1,24 @@ + + diff --git a/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html new file mode 100644 index 00000000..1cd16cab --- /dev/null +++ b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html @@ -0,0 +1,52 @@ + diff --git a/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html new file mode 100644 index 00000000..519c147b --- /dev/null +++ b/media/jplayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html @@ -0,0 +1,43 @@ + diff --git a/script.php b/script.php index c28c15a3..120f11c8 100644 --- a/script.php +++ b/script.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage script.php @@ -53,536 +53,536 @@ class com_sermondistributorInstallerScript */ function uninstall($parent) { - // [Interpretation 3430] Get Application object + // [Interpretation 3510] Get Application object $app = JFactory::getApplication(); - // [Interpretation 3432] Get The Database object + // [Interpretation 3512] Get The Database object $db = JFactory::getDbo(); - // [Interpretation 3441] Create a new query object. + // [Interpretation 3521] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 3443] Select id from content type table + // [Interpretation 3523] Select id from content type table $query->select($db->quoteName('type_id')); $query->from($db->quoteName('#__content_types')); - // [Interpretation 3446] Where Preacher alias is found + // [Interpretation 3526] Where Preacher alias is found $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.preacher') ); $db->setQuery($query); - // [Interpretation 3449] Execute query to see if alias is found + // [Interpretation 3529] Execute query to see if alias is found $db->execute(); $preacher_found = $db->getNumRows(); - // [Interpretation 3452] Now check if there were any rows + // [Interpretation 3532] Now check if there were any rows if ($preacher_found) { - // [Interpretation 3455] Since there are load the needed preacher type ids + // [Interpretation 3535] Since there are load the needed preacher type ids $preacher_ids = $db->loadColumn(); - // [Interpretation 3459] Remove Preacher from the content type table + // [Interpretation 3539] Remove Preacher from the content type table $preacher_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.preacher') ); - // [Interpretation 3461] Create a new query object. + // [Interpretation 3541] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__content_types')); $query->where($preacher_condition); $db->setQuery($query); - // [Interpretation 3466] Execute the query to remove Preacher items + // [Interpretation 3546] Execute the query to remove Preacher items $preacher_done = $db->execute(); if ($preacher_done); { - // [Interpretation 3470] If succesfully remove Preacher add queued success message. + // [Interpretation 3550] If succesfully remove Preacher add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.preacher) type alias was removed from the #__content_type table')); } - // [Interpretation 3476] Remove Preacher items from the contentitem tag map table + // [Interpretation 3556] Remove Preacher items from the contentitem tag map table $preacher_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.preacher') ); - // [Interpretation 3478] Create a new query object. + // [Interpretation 3558] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__contentitem_tag_map')); $query->where($preacher_condition); $db->setQuery($query); - // [Interpretation 3483] Execute the query to remove Preacher items + // [Interpretation 3563] Execute the query to remove Preacher items $preacher_done = $db->execute(); if ($preacher_done); { - // [Interpretation 3487] If succesfully remove Preacher add queued success message. + // [Interpretation 3567] If succesfully remove Preacher add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.preacher) type alias was removed from the #__contentitem_tag_map table')); } - // [Interpretation 3493] Remove Preacher items from the ucm content table + // [Interpretation 3573] Remove Preacher items from the ucm content table $preacher_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_sermondistributor.preacher') ); - // [Interpretation 3495] Create a new query object. + // [Interpretation 3575] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_content')); $query->where($preacher_condition); $db->setQuery($query); - // [Interpretation 3500] Execute the query to remove Preacher items + // [Interpretation 3580] Execute the query to remove Preacher items $preacher_done = $db->execute(); if ($preacher_done); { - // [Interpretation 3504] If succesfully remove Preacher add queued success message. + // [Interpretation 3584] If succesfully remove Preacher add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.preacher) type alias was removed from the #__ucm_content table')); } - // [Interpretation 3510] Make sure that all the Preacher items are cleared from DB + // [Interpretation 3590] Make sure that all the Preacher items are cleared from DB foreach ($preacher_ids as $preacher_id) { - // [Interpretation 3515] Remove Preacher items from the ucm base table + // [Interpretation 3595] Remove Preacher items from the ucm base table $preacher_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $preacher_id); - // [Interpretation 3517] Create a new query object. + // [Interpretation 3597] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_base')); $query->where($preacher_condition); $db->setQuery($query); - // [Interpretation 3522] Execute the query to remove Preacher items + // [Interpretation 3602] Execute the query to remove Preacher items $db->execute(); - // [Interpretation 3526] Remove Preacher items from the ucm history table + // [Interpretation 3606] Remove Preacher items from the ucm history table $preacher_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $preacher_id); - // [Interpretation 3528] Create a new query object. + // [Interpretation 3608] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_history')); $query->where($preacher_condition); $db->setQuery($query); - // [Interpretation 3533] Execute the query to remove Preacher items + // [Interpretation 3613] Execute the query to remove Preacher items $db->execute(); } } - // [Interpretation 3441] Create a new query object. + // [Interpretation 3521] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 3443] Select id from content type table + // [Interpretation 3523] Select id from content type table $query->select($db->quoteName('type_id')); $query->from($db->quoteName('#__content_types')); - // [Interpretation 3446] Where Sermon alias is found + // [Interpretation 3526] Where Sermon alias is found $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.sermon') ); $db->setQuery($query); - // [Interpretation 3449] Execute query to see if alias is found + // [Interpretation 3529] Execute query to see if alias is found $db->execute(); $sermon_found = $db->getNumRows(); - // [Interpretation 3452] Now check if there were any rows + // [Interpretation 3532] Now check if there were any rows if ($sermon_found) { - // [Interpretation 3455] Since there are load the needed sermon type ids + // [Interpretation 3535] Since there are load the needed sermon type ids $sermon_ids = $db->loadColumn(); - // [Interpretation 3459] Remove Sermon from the content type table + // [Interpretation 3539] Remove Sermon from the content type table $sermon_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.sermon') ); - // [Interpretation 3461] Create a new query object. + // [Interpretation 3541] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__content_types')); $query->where($sermon_condition); $db->setQuery($query); - // [Interpretation 3466] Execute the query to remove Sermon items + // [Interpretation 3546] Execute the query to remove Sermon items $sermon_done = $db->execute(); if ($sermon_done); { - // [Interpretation 3470] If succesfully remove Sermon add queued success message. + // [Interpretation 3550] If succesfully remove Sermon add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.sermon) type alias was removed from the #__content_type table')); } - // [Interpretation 3476] Remove Sermon items from the contentitem tag map table + // [Interpretation 3556] Remove Sermon items from the contentitem tag map table $sermon_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.sermon') ); - // [Interpretation 3478] Create a new query object. + // [Interpretation 3558] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__contentitem_tag_map')); $query->where($sermon_condition); $db->setQuery($query); - // [Interpretation 3483] Execute the query to remove Sermon items + // [Interpretation 3563] Execute the query to remove Sermon items $sermon_done = $db->execute(); if ($sermon_done); { - // [Interpretation 3487] If succesfully remove Sermon add queued success message. + // [Interpretation 3567] If succesfully remove Sermon add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.sermon) type alias was removed from the #__contentitem_tag_map table')); } - // [Interpretation 3493] Remove Sermon items from the ucm content table + // [Interpretation 3573] Remove Sermon items from the ucm content table $sermon_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_sermondistributor.sermon') ); - // [Interpretation 3495] Create a new query object. + // [Interpretation 3575] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_content')); $query->where($sermon_condition); $db->setQuery($query); - // [Interpretation 3500] Execute the query to remove Sermon items + // [Interpretation 3580] Execute the query to remove Sermon items $sermon_done = $db->execute(); if ($sermon_done); { - // [Interpretation 3504] If succesfully remove Sermon add queued success message. + // [Interpretation 3584] If succesfully remove Sermon add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.sermon) type alias was removed from the #__ucm_content table')); } - // [Interpretation 3510] Make sure that all the Sermon items are cleared from DB + // [Interpretation 3590] Make sure that all the Sermon items are cleared from DB foreach ($sermon_ids as $sermon_id) { - // [Interpretation 3515] Remove Sermon items from the ucm base table + // [Interpretation 3595] Remove Sermon items from the ucm base table $sermon_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $sermon_id); - // [Interpretation 3517] Create a new query object. + // [Interpretation 3597] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_base')); $query->where($sermon_condition); $db->setQuery($query); - // [Interpretation 3522] Execute the query to remove Sermon items + // [Interpretation 3602] Execute the query to remove Sermon items $db->execute(); - // [Interpretation 3526] Remove Sermon items from the ucm history table + // [Interpretation 3606] Remove Sermon items from the ucm history table $sermon_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $sermon_id); - // [Interpretation 3528] Create a new query object. + // [Interpretation 3608] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_history')); $query->where($sermon_condition); $db->setQuery($query); - // [Interpretation 3533] Execute the query to remove Sermon items + // [Interpretation 3613] Execute the query to remove Sermon items $db->execute(); } } - // [Interpretation 3441] Create a new query object. + // [Interpretation 3521] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 3443] Select id from content type table + // [Interpretation 3523] Select id from content type table $query->select($db->quoteName('type_id')); $query->from($db->quoteName('#__content_types')); - // [Interpretation 3446] Where Sermon catid alias is found + // [Interpretation 3526] Where Sermon catid alias is found $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.sermons.category') ); $db->setQuery($query); - // [Interpretation 3449] Execute query to see if alias is found + // [Interpretation 3529] Execute query to see if alias is found $db->execute(); $sermon_catid_found = $db->getNumRows(); - // [Interpretation 3452] Now check if there were any rows + // [Interpretation 3532] Now check if there were any rows if ($sermon_catid_found) { - // [Interpretation 3455] Since there are load the needed sermon_catid type ids + // [Interpretation 3535] Since there are load the needed sermon_catid type ids $sermon_catid_ids = $db->loadColumn(); - // [Interpretation 3459] Remove Sermon catid from the content type table + // [Interpretation 3539] Remove Sermon catid from the content type table $sermon_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.sermons.category') ); - // [Interpretation 3461] Create a new query object. + // [Interpretation 3541] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__content_types')); $query->where($sermon_catid_condition); $db->setQuery($query); - // [Interpretation 3466] Execute the query to remove Sermon catid items + // [Interpretation 3546] Execute the query to remove Sermon catid items $sermon_catid_done = $db->execute(); if ($sermon_catid_done); { - // [Interpretation 3470] If succesfully remove Sermon catid add queued success message. + // [Interpretation 3550] If succesfully remove Sermon catid add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.sermons.category) type alias was removed from the #__content_type table')); } - // [Interpretation 3476] Remove Sermon catid items from the contentitem tag map table + // [Interpretation 3556] Remove Sermon catid items from the contentitem tag map table $sermon_catid_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.sermons.category') ); - // [Interpretation 3478] Create a new query object. + // [Interpretation 3558] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__contentitem_tag_map')); $query->where($sermon_catid_condition); $db->setQuery($query); - // [Interpretation 3483] Execute the query to remove Sermon catid items + // [Interpretation 3563] Execute the query to remove Sermon catid items $sermon_catid_done = $db->execute(); if ($sermon_catid_done); { - // [Interpretation 3487] If succesfully remove Sermon catid add queued success message. + // [Interpretation 3567] If succesfully remove Sermon catid add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.sermons.category) type alias was removed from the #__contentitem_tag_map table')); } - // [Interpretation 3493] Remove Sermon catid items from the ucm content table + // [Interpretation 3573] Remove Sermon catid items from the ucm content table $sermon_catid_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_sermondistributor.sermons.category') ); - // [Interpretation 3495] Create a new query object. + // [Interpretation 3575] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_content')); $query->where($sermon_catid_condition); $db->setQuery($query); - // [Interpretation 3500] Execute the query to remove Sermon catid items + // [Interpretation 3580] Execute the query to remove Sermon catid items $sermon_catid_done = $db->execute(); if ($sermon_catid_done); { - // [Interpretation 3504] If succesfully remove Sermon catid add queued success message. + // [Interpretation 3584] If succesfully remove Sermon catid add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.sermons.category) type alias was removed from the #__ucm_content table')); } - // [Interpretation 3510] Make sure that all the Sermon catid items are cleared from DB + // [Interpretation 3590] Make sure that all the Sermon catid items are cleared from DB foreach ($sermon_catid_ids as $sermon_catid_id) { - // [Interpretation 3515] Remove Sermon catid items from the ucm base table + // [Interpretation 3595] Remove Sermon catid items from the ucm base table $sermon_catid_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $sermon_catid_id); - // [Interpretation 3517] Create a new query object. + // [Interpretation 3597] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_base')); $query->where($sermon_catid_condition); $db->setQuery($query); - // [Interpretation 3522] Execute the query to remove Sermon catid items + // [Interpretation 3602] Execute the query to remove Sermon catid items $db->execute(); - // [Interpretation 3526] Remove Sermon catid items from the ucm history table + // [Interpretation 3606] Remove Sermon catid items from the ucm history table $sermon_catid_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $sermon_catid_id); - // [Interpretation 3528] Create a new query object. + // [Interpretation 3608] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_history')); $query->where($sermon_catid_condition); $db->setQuery($query); - // [Interpretation 3533] Execute the query to remove Sermon catid items + // [Interpretation 3613] Execute the query to remove Sermon catid items $db->execute(); } } - // [Interpretation 3441] Create a new query object. + // [Interpretation 3521] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 3443] Select id from content type table + // [Interpretation 3523] Select id from content type table $query->select($db->quoteName('type_id')); $query->from($db->quoteName('#__content_types')); - // [Interpretation 3446] Where Series alias is found + // [Interpretation 3526] Where Series alias is found $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.series') ); $db->setQuery($query); - // [Interpretation 3449] Execute query to see if alias is found + // [Interpretation 3529] Execute query to see if alias is found $db->execute(); $series_found = $db->getNumRows(); - // [Interpretation 3452] Now check if there were any rows + // [Interpretation 3532] Now check if there were any rows if ($series_found) { - // [Interpretation 3455] Since there are load the needed series type ids + // [Interpretation 3535] Since there are load the needed series type ids $series_ids = $db->loadColumn(); - // [Interpretation 3459] Remove Series from the content type table + // [Interpretation 3539] Remove Series from the content type table $series_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.series') ); - // [Interpretation 3461] Create a new query object. + // [Interpretation 3541] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__content_types')); $query->where($series_condition); $db->setQuery($query); - // [Interpretation 3466] Execute the query to remove Series items + // [Interpretation 3546] Execute the query to remove Series items $series_done = $db->execute(); if ($series_done); { - // [Interpretation 3470] If succesfully remove Series add queued success message. + // [Interpretation 3550] If succesfully remove Series add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.series) type alias was removed from the #__content_type table')); } - // [Interpretation 3476] Remove Series items from the contentitem tag map table + // [Interpretation 3556] Remove Series items from the contentitem tag map table $series_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.series') ); - // [Interpretation 3478] Create a new query object. + // [Interpretation 3558] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__contentitem_tag_map')); $query->where($series_condition); $db->setQuery($query); - // [Interpretation 3483] Execute the query to remove Series items + // [Interpretation 3563] Execute the query to remove Series items $series_done = $db->execute(); if ($series_done); { - // [Interpretation 3487] If succesfully remove Series add queued success message. + // [Interpretation 3567] If succesfully remove Series add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.series) type alias was removed from the #__contentitem_tag_map table')); } - // [Interpretation 3493] Remove Series items from the ucm content table + // [Interpretation 3573] Remove Series items from the ucm content table $series_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_sermondistributor.series') ); - // [Interpretation 3495] Create a new query object. + // [Interpretation 3575] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_content')); $query->where($series_condition); $db->setQuery($query); - // [Interpretation 3500] Execute the query to remove Series items + // [Interpretation 3580] Execute the query to remove Series items $series_done = $db->execute(); if ($series_done); { - // [Interpretation 3504] If succesfully remove Series add queued success message. + // [Interpretation 3584] If succesfully remove Series add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.series) type alias was removed from the #__ucm_content table')); } - // [Interpretation 3510] Make sure that all the Series items are cleared from DB + // [Interpretation 3590] Make sure that all the Series items are cleared from DB foreach ($series_ids as $series_id) { - // [Interpretation 3515] Remove Series items from the ucm base table + // [Interpretation 3595] Remove Series items from the ucm base table $series_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $series_id); - // [Interpretation 3517] Create a new query object. + // [Interpretation 3597] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_base')); $query->where($series_condition); $db->setQuery($query); - // [Interpretation 3522] Execute the query to remove Series items + // [Interpretation 3602] Execute the query to remove Series items $db->execute(); - // [Interpretation 3526] Remove Series items from the ucm history table + // [Interpretation 3606] Remove Series items from the ucm history table $series_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $series_id); - // [Interpretation 3528] Create a new query object. + // [Interpretation 3608] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_history')); $query->where($series_condition); $db->setQuery($query); - // [Interpretation 3533] Execute the query to remove Series items + // [Interpretation 3613] Execute the query to remove Series items $db->execute(); } } - // [Interpretation 3441] Create a new query object. + // [Interpretation 3521] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 3443] Select id from content type table + // [Interpretation 3523] Select id from content type table $query->select($db->quoteName('type_id')); $query->from($db->quoteName('#__content_types')); - // [Interpretation 3446] Where Statistic alias is found + // [Interpretation 3526] Where Statistic alias is found $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.statistic') ); $db->setQuery($query); - // [Interpretation 3449] Execute query to see if alias is found + // [Interpretation 3529] Execute query to see if alias is found $db->execute(); $statistic_found = $db->getNumRows(); - // [Interpretation 3452] Now check if there were any rows + // [Interpretation 3532] Now check if there were any rows if ($statistic_found) { - // [Interpretation 3455] Since there are load the needed statistic type ids + // [Interpretation 3535] Since there are load the needed statistic type ids $statistic_ids = $db->loadColumn(); - // [Interpretation 3459] Remove Statistic from the content type table + // [Interpretation 3539] Remove Statistic from the content type table $statistic_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.statistic') ); - // [Interpretation 3461] Create a new query object. + // [Interpretation 3541] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__content_types')); $query->where($statistic_condition); $db->setQuery($query); - // [Interpretation 3466] Execute the query to remove Statistic items + // [Interpretation 3546] Execute the query to remove Statistic items $statistic_done = $db->execute(); if ($statistic_done); { - // [Interpretation 3470] If succesfully remove Statistic add queued success message. + // [Interpretation 3550] If succesfully remove Statistic add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.statistic) type alias was removed from the #__content_type table')); } - // [Interpretation 3476] Remove Statistic items from the contentitem tag map table + // [Interpretation 3556] Remove Statistic items from the contentitem tag map table $statistic_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.statistic') ); - // [Interpretation 3478] Create a new query object. + // [Interpretation 3558] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__contentitem_tag_map')); $query->where($statistic_condition); $db->setQuery($query); - // [Interpretation 3483] Execute the query to remove Statistic items + // [Interpretation 3563] Execute the query to remove Statistic items $statistic_done = $db->execute(); if ($statistic_done); { - // [Interpretation 3487] If succesfully remove Statistic add queued success message. + // [Interpretation 3567] If succesfully remove Statistic add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.statistic) type alias was removed from the #__contentitem_tag_map table')); } - // [Interpretation 3493] Remove Statistic items from the ucm content table + // [Interpretation 3573] Remove Statistic items from the ucm content table $statistic_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_sermondistributor.statistic') ); - // [Interpretation 3495] Create a new query object. + // [Interpretation 3575] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_content')); $query->where($statistic_condition); $db->setQuery($query); - // [Interpretation 3500] Execute the query to remove Statistic items + // [Interpretation 3580] Execute the query to remove Statistic items $statistic_done = $db->execute(); if ($statistic_done); { - // [Interpretation 3504] If succesfully remove Statistic add queued success message. + // [Interpretation 3584] If succesfully remove Statistic add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.statistic) type alias was removed from the #__ucm_content table')); } - // [Interpretation 3510] Make sure that all the Statistic items are cleared from DB + // [Interpretation 3590] Make sure that all the Statistic items are cleared from DB foreach ($statistic_ids as $statistic_id) { - // [Interpretation 3515] Remove Statistic items from the ucm base table + // [Interpretation 3595] Remove Statistic items from the ucm base table $statistic_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $statistic_id); - // [Interpretation 3517] Create a new query object. + // [Interpretation 3597] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_base')); $query->where($statistic_condition); $db->setQuery($query); - // [Interpretation 3522] Execute the query to remove Statistic items + // [Interpretation 3602] Execute the query to remove Statistic items $db->execute(); - // [Interpretation 3526] Remove Statistic items from the ucm history table + // [Interpretation 3606] Remove Statistic items from the ucm history table $statistic_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $statistic_id); - // [Interpretation 3528] Create a new query object. + // [Interpretation 3608] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_history')); $query->where($statistic_condition); $db->setQuery($query); - // [Interpretation 3533] Execute the query to remove Statistic items + // [Interpretation 3613] Execute the query to remove Statistic items $db->execute(); } } - // [Interpretation 3441] Create a new query object. + // [Interpretation 3521] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 3443] Select id from content type table + // [Interpretation 3523] Select id from content type table $query->select($db->quoteName('type_id')); $query->from($db->quoteName('#__content_types')); - // [Interpretation 3446] Where Help_document alias is found + // [Interpretation 3526] Where Help_document alias is found $query->where( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.help_document') ); $db->setQuery($query); - // [Interpretation 3449] Execute query to see if alias is found + // [Interpretation 3529] Execute query to see if alias is found $db->execute(); $help_document_found = $db->getNumRows(); - // [Interpretation 3452] Now check if there were any rows + // [Interpretation 3532] Now check if there were any rows if ($help_document_found) { - // [Interpretation 3455] Since there are load the needed help_document type ids + // [Interpretation 3535] Since there are load the needed help_document type ids $help_document_ids = $db->loadColumn(); - // [Interpretation 3459] Remove Help_document from the content type table + // [Interpretation 3539] Remove Help_document from the content type table $help_document_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.help_document') ); - // [Interpretation 3461] Create a new query object. + // [Interpretation 3541] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__content_types')); $query->where($help_document_condition); $db->setQuery($query); - // [Interpretation 3466] Execute the query to remove Help_document items + // [Interpretation 3546] Execute the query to remove Help_document items $help_document_done = $db->execute(); if ($help_document_done); { - // [Interpretation 3470] If succesfully remove Help_document add queued success message. + // [Interpretation 3550] If succesfully remove Help_document add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.help_document) type alias was removed from the #__content_type table')); } - // [Interpretation 3476] Remove Help_document items from the contentitem tag map table + // [Interpretation 3556] Remove Help_document items from the contentitem tag map table $help_document_condition = array( $db->quoteName('type_alias') . ' = '. $db->quote('com_sermondistributor.help_document') ); - // [Interpretation 3478] Create a new query object. + // [Interpretation 3558] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__contentitem_tag_map')); $query->where($help_document_condition); $db->setQuery($query); - // [Interpretation 3483] Execute the query to remove Help_document items + // [Interpretation 3563] Execute the query to remove Help_document items $help_document_done = $db->execute(); if ($help_document_done); { - // [Interpretation 3487] If succesfully remove Help_document add queued success message. + // [Interpretation 3567] If succesfully remove Help_document add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.help_document) type alias was removed from the #__contentitem_tag_map table')); } - // [Interpretation 3493] Remove Help_document items from the ucm content table + // [Interpretation 3573] Remove Help_document items from the ucm content table $help_document_condition = array( $db->quoteName('core_type_alias') . ' = ' . $db->quote('com_sermondistributor.help_document') ); - // [Interpretation 3495] Create a new query object. + // [Interpretation 3575] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_content')); $query->where($help_document_condition); $db->setQuery($query); - // [Interpretation 3500] Execute the query to remove Help_document items + // [Interpretation 3580] Execute the query to remove Help_document items $help_document_done = $db->execute(); if ($help_document_done); { - // [Interpretation 3504] If succesfully remove Help_document add queued success message. + // [Interpretation 3584] If succesfully remove Help_document add queued success message. $app->enqueueMessage(JText::_('The (com_sermondistributor.help_document) type alias was removed from the #__ucm_content table')); } - // [Interpretation 3510] Make sure that all the Help_document items are cleared from DB + // [Interpretation 3590] Make sure that all the Help_document items are cleared from DB foreach ($help_document_ids as $help_document_id) { - // [Interpretation 3515] Remove Help_document items from the ucm base table + // [Interpretation 3595] Remove Help_document items from the ucm base table $help_document_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $help_document_id); - // [Interpretation 3517] Create a new query object. + // [Interpretation 3597] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_base')); $query->where($help_document_condition); $db->setQuery($query); - // [Interpretation 3522] Execute the query to remove Help_document items + // [Interpretation 3602] Execute the query to remove Help_document items $db->execute(); - // [Interpretation 3526] Remove Help_document items from the ucm history table + // [Interpretation 3606] Remove Help_document items from the ucm history table $help_document_condition = array( $db->quoteName('ucm_type_id') . ' = ' . $help_document_id); - // [Interpretation 3528] Create a new query object. + // [Interpretation 3608] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__ucm_history')); $query->where($help_document_condition); $db->setQuery($query); - // [Interpretation 3533] Execute the query to remove Help_document items + // [Interpretation 3613] Execute the query to remove Help_document items $db->execute(); } } - // [Interpretation 3541] If All related items was removed queued success message. + // [Interpretation 3621] If All related items was removed queued success message. $app->enqueueMessage(JText::_('All related items was removed from the #__ucm_base table')); $app->enqueueMessage(JText::_('All related items was removed from the #__ucm_history table')); - // [Interpretation 3546] Remove sermondistributor assets from the assets table + // [Interpretation 3626] Remove sermondistributor assets from the assets table $sermondistributor_condition = array( $db->quoteName('name') . ' LIKE ' . $db->quote('com_sermondistributor%') ); - // [Interpretation 3548] Create a new query object. + // [Interpretation 3628] Create a new query object. $query = $db->getQuery(true); $query->delete($db->quoteName('#__assets')); $query->where($sermondistributor_condition); @@ -590,7 +590,7 @@ class com_sermondistributorInstallerScript $help_document_done = $db->execute(); if ($help_document_done); { - // [Interpretation 3556] If succesfully remove sermondistributor add queued success message. + // [Interpretation 3636] If succesfully remove sermondistributor add queued success message. $app->enqueueMessage(JText::_('All related items was removed from the #__assets table')); } @@ -644,10 +644,10 @@ class com_sermondistributorInstallerScript if ($type == 'install') { - // [Interpretation 3606] Get The Database object + // [Interpretation 3686] Get The Database object $db = JFactory::getDbo(); - // [Interpretation 3613] Create the preacher content type object. + // [Interpretation 3693] Create the preacher content type object. $preacher = new stdClass(); $preacher->type_title = 'Sermondistributor Preacher'; $preacher->type_alias = 'com_sermondistributor.preacher'; @@ -656,10 +656,10 @@ class com_sermondistributorInstallerScript $preacher->router = 'SermondistributorHelperRoute::getPreacherRoute'; $preacher->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/preacher.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}]}'; - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. $preacher_Inserted = $db->insertObject('#__content_types', $preacher); - // [Interpretation 3613] Create the sermon content type object. + // [Interpretation 3693] Create the sermon content type object. $sermon = new stdClass(); $sermon->type_title = 'Sermondistributor Sermon'; $sermon->type_alias = 'com_sermondistributor.sermon'; @@ -668,10 +668,10 @@ class com_sermondistributorInstallerScript $sermon->router = 'SermondistributorHelperRoute::getSermonRoute'; $sermon->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/sermon.xml","hideFields": ["asset_id","checked_out","checked_out_time","version","not_required","auto_sermons"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","preacher","series","catid","link_type","source","not_required","build"],"displayLookup": [{"sourceColumn": "catid","targetTable": "#__categories","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "preacher","targetTable": "#__sermondistributor_preacher","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "series","targetTable": "#__sermondistributor_series","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "local_files","targetTable": "","targetColumn": "","displayColumn": ""},{"sourceColumn": "manual_files","targetTable": "","targetColumn": "","displayColumn": ""}]}'; - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. $sermon_Inserted = $db->insertObject('#__content_types', $sermon); - // [Interpretation 3613] Create the sermon catagory content type object. + // [Interpretation 3693] Create the sermon catagory content type object. $sermon_catagory = new stdClass(); $sermon_catagory->type_title = 'Sermondistributor Sermon Catid'; $sermon_catagory->type_alias = 'com_sermondistributor.sermons.category'; @@ -680,10 +680,10 @@ class com_sermondistributorInstallerScript $sermon_catagory->router = 'SermondistributorHelperRoute::getCategoryRoute'; $sermon_catagory->content_history_options = '{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'; - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. $sermon_catagory_Inserted = $db->insertObject('#__content_types', $sermon_catagory); - // [Interpretation 3613] Create the series content type object. + // [Interpretation 3693] Create the series content type object. $series = new stdClass(); $series->type_title = 'Sermondistributor Series'; $series->type_alias = 'com_sermondistributor.series'; @@ -692,10 +692,10 @@ class com_sermondistributorInstallerScript $series->router = 'SermondistributorHelperRoute::getSeriesRoute'; $series->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/series.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}]}'; - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. $series_Inserted = $db->insertObject('#__content_types', $series); - // [Interpretation 3613] Create the statistic content type object. + // [Interpretation 3693] Create the statistic content type object. $statistic = new stdClass(); $statistic->type_title = 'Sermondistributor Statistic'; $statistic->type_alias = 'com_sermondistributor.statistic'; @@ -704,10 +704,10 @@ class com_sermondistributorInstallerScript $statistic->router = 'SermondistributorHelperRoute::getStatisticRoute'; $statistic->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/statistic.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","sermon","preacher","series","counter"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "sermon","targetTable": "#__sermondistributor_sermon","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "preacher","targetTable": "#__sermondistributor_preacher","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "series","targetTable": "#__sermondistributor_series","targetColumn": "id","displayColumn": "name"}]}'; - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. $statistic_Inserted = $db->insertObject('#__content_types', $statistic); - // [Interpretation 3613] Create the help_document content type object. + // [Interpretation 3693] Create the help_document content type object. $help_document = new stdClass(); $help_document->type_title = 'Sermondistributor Help_document'; $help_document->type_alias = 'com_sermondistributor.help_document'; @@ -716,19 +716,19 @@ class com_sermondistributorInstallerScript $help_document->router = 'SermondistributorHelperRoute::getHelp_documentRoute'; $help_document->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/help_document.xml","hideFields": ["asset_id","checked_out","checked_out_time","version","not_required"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","type","location","target","article","not_required"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "article","targetTable": "#__content","targetColumn": "id","displayColumn": "title"}]}'; - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. $help_document_Inserted = $db->insertObject('#__content_types', $help_document); - // [Interpretation 3667] Install the global extenstion params. + // [Interpretation 3747] Install the global extenstion params. $query = $db->getQuery(true); - // [Interpretation 3675] Field to update. + // [Interpretation 3755] Field to update. $fields = array( - $db->quoteName('params') . ' = ' . $db->quote('{"autorName":"Llewellyn van der Merwe","autorEmail":"llewellyn@vdm.io","add_to_dropbox":"0","dropbox_filetypes":"zero","manual_link_update_method":"1","manual_dropbox_timer":"60","auto_link_update_method":"1","auto_dropbox_timer":"60","preacher_state":"1","series_state":"1","sermon_state":"1","auto_link_type":"1","link_encryption":")$KCGiB3BEfDf6kzEWrFnHex5uTJxlQG","preachers_display":"2","preachers_list_style":"2","preachers_table_color":"0","preachers_icon":"1","preachers_desc":"1","preachers_sermon_count":"1","preachers_hits":"1","preachers_website":"1","preachers_email":"1","preacher_request_id":"zero","preacher_display":"3","preacher_box_contrast":"1","preacher_list_style":"3","preacher_icon":"1","preacher_desc":"1","preacher_sermon_count":"1","preacher_hits":"1","preacher_email":"1","preacher_website":"1","preacher_sermons_display":"2","preacher_sermons_list_style":"2","preacher_sermons_table_color":"0","preacher_sermons_icon":"1","preacher_sermons_desc":"1","preacher_sermons_series":"1","preacher_sermons_category":"1","preacher_sermons_download_counter":"1","preacher_sermons_hits":"1","preacher_sermons_downloads":"1","preacher_sermons_open":"1","categories_display":"2","categories_list_style":"2","categories_table_color":"0","categories_icon":"1","categories_desc":"1","categories_sermon_count":"1","categories_hits":"1","category_display":"3","category_box_contrast":"1","category_list_style":"3","category_icon":"1","category_desc":"1","category_sermon_count":"1","category_hits":"1","category_sermons_display":"2","category_sermons_list_style":"1","category_sermons_table_color":"1","category_sermons_icon":"1","category_sermons_desc":"1","category_sermons_preacher":"1","category_sermons_series":"1","category_sermons_download_counter":"1","category_sermons_hits":"1","category_sermons_downloads":"1","category_sermons_open":"1","list_series_display":"2","list_series_list_style":"2","list_series_table_color":"0","list_series_icon":"1","list_series_desc":"1","list_series_sermon_count":"1","list_series_hits":"1","series_request_id":"zero","series_display":"3","series_box_contrast":"1","series_list_style":"3","series_icon":"1","series_desc":"1","series_sermon_count":"1","series_hits":"1","series_sermons_display":"2","series_sermons_list_style":"1","series_sermons_table_color":"1","series_sermons_icon":"1","series_sermons_desc":"1","series_sermons_preacher":"1","series_sermons_category":"1","series_sermons_download_counter":"1","series_sermons_hits":"1","series_sermons_downloads":"1","series_sermons_open":"1","sermon_display":"1","sermon_box_contrast":"one","sermon_list_style":"1","sermon_icon":"1","sermon_desc":"1","sermon_preacher":"1","sermon_series":"1","sermon_series":"1","sermon_category":"1","sermon_download_counter":"1","sermon_hits":"1","sermon_downloads":"1","check_in":"-1 day","save_history":"1","history_limit":"10","uikit_load":"1","uikit_min":"","uikit_style":""}'), + $db->quoteName('params') . ' = ' . $db->quote('{"autorName":"Llewellyn van der Merwe","autorEmail":"llewellyn@vdm.io","player":"1","add_to_dropbox":"0","dropbox_filetypes":"zero","manual_link_update_method":"1","manual_dropbox_timer":"60","auto_link_update_method":"1","auto_dropbox_timer":"60","preacher_state":"1","series_state":"1","sermon_state":"1","auto_link_type":"1","link_encryption":")$KCGiB3BEfDf6kzEWrFnHex5uTJxlQG","preachers_display":"2","preachers_list_style":"2","preachers_table_color":"0","preachers_icon":"1","preachers_desc":"1","preachers_sermon_count":"1","preachers_hits":"1","preachers_website":"1","preachers_email":"1","preacher_request_id":"zero","preacher_display":"3","preacher_box_contrast":"1","preacher_list_style":"3","preacher_icon":"1","preacher_desc":"1","preacher_sermon_count":"1","preacher_hits":"1","preacher_email":"1","preacher_website":"1","preacher_sermons_display":"2","preacher_sermons_list_style":"2","preacher_sermons_table_color":"0","preacher_sermons_icon":"1","preacher_sermons_desc":"1","preacher_sermons_series":"1","preacher_sermons_category":"1","preacher_sermons_download_counter":"1","preacher_sermons_hits":"1","preacher_sermons_downloads":"1","preacher_sermons_open":"1","categories_display":"2","categories_list_style":"2","categories_table_color":"0","categories_icon":"1","categories_desc":"1","categories_sermon_count":"1","categories_hits":"1","category_display":"3","category_box_contrast":"1","category_list_style":"3","category_icon":"1","category_desc":"1","category_sermon_count":"1","category_hits":"1","category_sermons_display":"2","category_sermons_list_style":"1","category_sermons_table_color":"1","category_sermons_icon":"1","category_sermons_desc":"1","category_sermons_preacher":"1","category_sermons_series":"1","category_sermons_download_counter":"1","category_sermons_hits":"1","category_sermons_downloads":"1","category_sermons_open":"1","list_series_display":"2","list_series_list_style":"2","list_series_table_color":"0","list_series_icon":"1","list_series_desc":"1","list_series_sermon_count":"1","list_series_hits":"1","series_request_id":"zero","series_display":"3","series_box_contrast":"1","series_list_style":"3","series_icon":"1","series_desc":"1","series_sermon_count":"1","series_hits":"1","series_sermons_display":"2","series_sermons_list_style":"1","series_sermons_table_color":"1","series_sermons_icon":"1","series_sermons_desc":"1","series_sermons_preacher":"1","series_sermons_category":"1","series_sermons_download_counter":"1","series_sermons_hits":"1","series_sermons_downloads":"1","series_sermons_open":"1","sermon_display":"1","sermon_box_contrast":"one","sermon_list_style":"1","sermon_icon":"1","sermon_desc":"1","sermon_preacher":"1","sermon_series":"1","sermon_series":"1","sermon_category":"1","sermon_download_counter":"1","sermon_hits":"1","sermon_downloads":"1","check_in":"-1 day","save_history":"1","history_limit":"10","uikit_load":"1","uikit_min":"","uikit_style":""}'), ); - // [Interpretation 3679] Condition. + // [Interpretation 3759] Condition. $conditions = array( $db->quoteName('element') . ' = ' . $db->quote('com_sermondistributor') ); @@ -744,10 +744,10 @@ class com_sermondistributorInstallerScript if ($type == 'update') { - // [Interpretation 3606] Get The Database object + // [Interpretation 3686] Get The Database object $db = JFactory::getDbo(); - // [Interpretation 3613] Create the preacher content type object. + // [Interpretation 3693] Create the preacher content type object. $preacher = new stdClass(); $preacher->type_title = 'Sermondistributor Preacher'; $preacher->type_alias = 'com_sermondistributor.preacher'; @@ -756,7 +756,7 @@ class com_sermondistributorInstallerScript $preacher->router = 'SermondistributorHelperRoute::getPreacherRoute'; $preacher->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/preacher.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}]}'; - // [Interpretation 3622] Check if preacher type is already in content_type DB. + // [Interpretation 3702] Check if preacher type is already in content_type DB. $preacher_id = null; $query = $db->getQuery(true); $query->select($db->quoteName(array('type_id'))); @@ -765,7 +765,7 @@ class com_sermondistributorInstallerScript $db->setQuery($query); $db->execute(); - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. if ($db->getNumRows()) { $preacher->type_id = $db->loadResult(); @@ -776,7 +776,7 @@ class com_sermondistributorInstallerScript $preacher_Inserted = $db->insertObject('#__content_types', $preacher); } - // [Interpretation 3613] Create the sermon content type object. + // [Interpretation 3693] Create the sermon content type object. $sermon = new stdClass(); $sermon->type_title = 'Sermondistributor Sermon'; $sermon->type_alias = 'com_sermondistributor.sermon'; @@ -785,7 +785,7 @@ class com_sermondistributorInstallerScript $sermon->router = 'SermondistributorHelperRoute::getSermonRoute'; $sermon->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/sermon.xml","hideFields": ["asset_id","checked_out","checked_out_time","version","not_required","auto_sermons"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","preacher","series","catid","link_type","source","not_required","build"],"displayLookup": [{"sourceColumn": "catid","targetTable": "#__categories","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "preacher","targetTable": "#__sermondistributor_preacher","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "series","targetTable": "#__sermondistributor_series","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "local_files","targetTable": "","targetColumn": "","displayColumn": ""},{"sourceColumn": "manual_files","targetTable": "","targetColumn": "","displayColumn": ""}]}'; - // [Interpretation 3622] Check if sermon type is already in content_type DB. + // [Interpretation 3702] Check if sermon type is already in content_type DB. $sermon_id = null; $query = $db->getQuery(true); $query->select($db->quoteName(array('type_id'))); @@ -794,7 +794,7 @@ class com_sermondistributorInstallerScript $db->setQuery($query); $db->execute(); - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. if ($db->getNumRows()) { $sermon->type_id = $db->loadResult(); @@ -805,7 +805,7 @@ class com_sermondistributorInstallerScript $sermon_Inserted = $db->insertObject('#__content_types', $sermon); } - // [Interpretation 3613] Create the sermon catagory content type object. + // [Interpretation 3693] Create the sermon catagory content type object. $sermon_catagory = new stdClass(); $sermon_catagory->type_title = 'Sermondistributor Sermon Catid'; $sermon_catagory->type_alias = 'com_sermondistributor.sermons.category'; @@ -814,7 +814,7 @@ class com_sermondistributorInstallerScript $sermon_catagory->router = 'SermondistributorHelperRoute::getCategoryRoute'; $sermon_catagory->content_history_options = '{"formFile":"administrator\/components\/com_categories\/models\/forms\/category.xml", "hideFields":["asset_id","checked_out","checked_out_time","version","lft","rgt","level","path","extension"], "ignoreChanges":["modified_user_id", "modified_time", "checked_out", "checked_out_time", "version", "hits", "path"],"convertToInt":["publish_up", "publish_down"], "displayLookup":[{"sourceColumn":"created_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"access","targetTable":"#__viewlevels","targetColumn":"id","displayColumn":"title"},{"sourceColumn":"modified_user_id","targetTable":"#__users","targetColumn":"id","displayColumn":"name"},{"sourceColumn":"parent_id","targetTable":"#__categories","targetColumn":"id","displayColumn":"title"}]}'; - // [Interpretation 3622] Check if sermon catagory type is already in content_type DB. + // [Interpretation 3702] Check if sermon catagory type is already in content_type DB. $sermon_catagory_id = null; $query = $db->getQuery(true); $query->select($db->quoteName(array('type_id'))); @@ -823,7 +823,7 @@ class com_sermondistributorInstallerScript $db->setQuery($query); $db->execute(); - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. if ($db->getNumRows()) { $sermon_catagory->type_id = $db->loadResult(); @@ -834,7 +834,7 @@ class com_sermondistributorInstallerScript $sermon_catagory_Inserted = $db->insertObject('#__content_types', $sermon_catagory); } - // [Interpretation 3613] Create the series content type object. + // [Interpretation 3693] Create the series content type object. $series = new stdClass(); $series->type_title = 'Sermondistributor Series'; $series->type_alias = 'com_sermondistributor.series'; @@ -843,7 +843,7 @@ class com_sermondistributorInstallerScript $series->router = 'SermondistributorHelperRoute::getSeriesRoute'; $series->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/series.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"}]}'; - // [Interpretation 3622] Check if series type is already in content_type DB. + // [Interpretation 3702] Check if series type is already in content_type DB. $series_id = null; $query = $db->getQuery(true); $query->select($db->quoteName(array('type_id'))); @@ -852,7 +852,7 @@ class com_sermondistributorInstallerScript $db->setQuery($query); $db->execute(); - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. if ($db->getNumRows()) { $series->type_id = $db->loadResult(); @@ -863,7 +863,7 @@ class com_sermondistributorInstallerScript $series_Inserted = $db->insertObject('#__content_types', $series); } - // [Interpretation 3613] Create the statistic content type object. + // [Interpretation 3693] Create the statistic content type object. $statistic = new stdClass(); $statistic->type_title = 'Sermondistributor Statistic'; $statistic->type_alias = 'com_sermondistributor.statistic'; @@ -872,7 +872,7 @@ class com_sermondistributorInstallerScript $statistic->router = 'SermondistributorHelperRoute::getStatisticRoute'; $statistic->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/statistic.xml","hideFields": ["asset_id","checked_out","checked_out_time","version"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","sermon","preacher","series","counter"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "sermon","targetTable": "#__sermondistributor_sermon","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "preacher","targetTable": "#__sermondistributor_preacher","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "series","targetTable": "#__sermondistributor_series","targetColumn": "id","displayColumn": "name"}]}'; - // [Interpretation 3622] Check if statistic type is already in content_type DB. + // [Interpretation 3702] Check if statistic type is already in content_type DB. $statistic_id = null; $query = $db->getQuery(true); $query->select($db->quoteName(array('type_id'))); @@ -881,7 +881,7 @@ class com_sermondistributorInstallerScript $db->setQuery($query); $db->execute(); - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. if ($db->getNumRows()) { $statistic->type_id = $db->loadResult(); @@ -892,7 +892,7 @@ class com_sermondistributorInstallerScript $statistic_Inserted = $db->insertObject('#__content_types', $statistic); } - // [Interpretation 3613] Create the help_document content type object. + // [Interpretation 3693] Create the help_document content type object. $help_document = new stdClass(); $help_document->type_title = 'Sermondistributor Help_document'; $help_document->type_alias = 'com_sermondistributor.help_document'; @@ -901,7 +901,7 @@ class com_sermondistributorInstallerScript $help_document->router = 'SermondistributorHelperRoute::getHelp_documentRoute'; $help_document->content_history_options = '{"formFile": "administrator/components/com_sermondistributor/models/forms/help_document.xml","hideFields": ["asset_id","checked_out","checked_out_time","version","not_required"],"ignoreChanges": ["modified_by","modified","checked_out","checked_out_time","version","hits"],"convertToInt": ["published","ordering","type","location","target","article","not_required"],"displayLookup": [{"sourceColumn": "created_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "access","targetTable": "#__viewlevels","targetColumn": "id","displayColumn": "title"},{"sourceColumn": "modified_by","targetTable": "#__users","targetColumn": "id","displayColumn": "name"},{"sourceColumn": "article","targetTable": "#__content","targetColumn": "id","displayColumn": "title"}]}'; - // [Interpretation 3622] Check if help_document type is already in content_type DB. + // [Interpretation 3702] Check if help_document type is already in content_type DB. $help_document_id = null; $query = $db->getQuery(true); $query->select($db->quoteName(array('type_id'))); @@ -910,7 +910,7 @@ class com_sermondistributorInstallerScript $db->setQuery($query); $db->execute(); - // [Interpretation 3631] Set the object into the content types table. + // [Interpretation 3711] Set the object into the content types table. if ($db->getNumRows()) { $help_document->type_id = $db->loadResult(); diff --git a/sermondistributor.xml b/sermondistributor.xml index ffceabc2..c0063837 100644 --- a/sermondistributor.xml +++ b/sermondistributor.xml @@ -1,7 +1,7 @@ COM_SERMONDISTRIBUTOR - 11th April, 2016 + 26th May, 2016 Llewellyn van der Merwe llewellyn@vdm.io https://www.vdm.io/ @@ -38,6 +38,7 @@ css images soundmanager + jplayer uikit footable diff --git a/site/assets/css/categories.css b/site/assets/css/categories.css index bc7b4cdc..1036070a 100644 --- a/site/assets/css/categories.css +++ b/site/assets/css/categories.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage categories.css diff --git a/site/assets/css/category.css b/site/assets/css/category.css index ae2204f0..a3df266e 100644 --- a/site/assets/css/category.css +++ b/site/assets/css/category.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage category.css diff --git a/site/assets/css/preacher.css b/site/assets/css/preacher.css index bcc9b3cb..98ad8752 100644 --- a/site/assets/css/preacher.css +++ b/site/assets/css/preacher.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacher.css diff --git a/site/assets/css/preachers.css b/site/assets/css/preachers.css index 4c1d3ae0..8b3fe9d6 100644 --- a/site/assets/css/preachers.css +++ b/site/assets/css/preachers.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preachers.css diff --git a/site/assets/css/series.css b/site/assets/css/series.css index 22db7d8d..ea43e389 100644 --- a/site/assets/css/series.css +++ b/site/assets/css/series.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series.css diff --git a/site/assets/css/serieslist.css b/site/assets/css/serieslist.css index 7708140d..94b03073 100644 --- a/site/assets/css/serieslist.css +++ b/site/assets/css/serieslist.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage serieslist.css diff --git a/site/assets/css/sermon.css b/site/assets/css/sermon.css index 9352be3d..83e7c15a 100644 --- a/site/assets/css/sermon.css +++ b/site/assets/css/sermon.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermon.css diff --git a/site/assets/css/site.css b/site/assets/css/site.css index b153640b..7df3ed46 100644 --- a/site/assets/css/site.css +++ b/site/assets/css/site.css @@ -10,7 +10,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage site.css diff --git a/site/controller.php b/site/controller.php index 9bcbe90d..064ecdde 100644 --- a/site/controller.php +++ b/site/controller.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage controller.php diff --git a/site/controllers/ajax.json.php b/site/controllers/ajax.json.php index 86503a32..99604822 100644 --- a/site/controllers/ajax.json.php +++ b/site/controllers/ajax.json.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage ajax.json.php diff --git a/site/controllers/download.php b/site/controllers/download.php index 1d9ae1a3..fd5d501d 100644 --- a/site/controllers/download.php +++ b/site/controllers/download.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage download.php diff --git a/site/controllers/help.php b/site/controllers/help.php index 35901a8e..0251b9df 100644 --- a/site/controllers/help.php +++ b/site/controllers/help.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage help.php diff --git a/site/helpers/dropboxupdater.php b/site/helpers/dropboxupdater.php index 663b3f6d..cde4de1f 100644 --- a/site/helpers/dropboxupdater.php +++ b/site/helpers/dropboxupdater.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage dropboxupdater.php diff --git a/site/helpers/headercheck.php b/site/helpers/headercheck.php index 91a3b1cc..98258a52 100644 --- a/site/helpers/headercheck.php +++ b/site/helpers/headercheck.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage headercheck.php diff --git a/site/helpers/route.php b/site/helpers/route.php index 25bce771..fe12d32c 100644 --- a/site/helpers/route.php +++ b/site/helpers/route.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage route.php @@ -44,18 +44,18 @@ abstract class SermondistributorHelperRoute { if ($id > 0) { - // [Interpretation 3829] Initialize the needel array. + // [Interpretation 3909] Initialize the needel array. $needles = array( 'sermon' => array((int) $id) ); - // [Interpretation 3833] Create the link + // [Interpretation 3913] Create the link $link = 'index.php?option=com_sermondistributor&view=sermon&id='. $id; } else { - // [Interpretation 3838] Initialize the needel array. + // [Interpretation 3918] Initialize the needel array. $needles = array(); - // [Interpretation 3840]Create the link but don't add the id. + // [Interpretation 3920]Create the link but don't add the id. $link = 'index.php?option=com_sermondistributor&view=sermon'; } if ($catid > 1) @@ -85,18 +85,18 @@ abstract class SermondistributorHelperRoute { if ($id > 0) { - // [Interpretation 3829] Initialize the needel array. + // [Interpretation 3909] Initialize the needel array. $needles = array( 'preachers' => array((int) $id) ); - // [Interpretation 3833] Create the link + // [Interpretation 3913] Create the link $link = 'index.php?option=com_sermondistributor&view=preachers&id='. $id; } else { - // [Interpretation 3838] Initialize the needel array. + // [Interpretation 3918] Initialize the needel array. $needles = array(); - // [Interpretation 3840]Create the link but don't add the id. + // [Interpretation 3920]Create the link but don't add the id. $link = 'index.php?option=com_sermondistributor&view=preachers'; } if ($catid > 1) @@ -126,18 +126,18 @@ abstract class SermondistributorHelperRoute { if ($id > 0) { - // [Interpretation 3829] Initialize the needel array. + // [Interpretation 3909] Initialize the needel array. $needles = array( 'preacher' => array((int) $id) ); - // [Interpretation 3833] Create the link + // [Interpretation 3913] Create the link $link = 'index.php?option=com_sermondistributor&view=preacher&id='. $id; } else { - // [Interpretation 3838] Initialize the needel array. + // [Interpretation 3918] Initialize the needel array. $needles = array(); - // [Interpretation 3840]Create the link but don't add the id. + // [Interpretation 3920]Create the link but don't add the id. $link = 'index.php?option=com_sermondistributor&view=preacher'; } if ($catid > 1) @@ -167,18 +167,18 @@ abstract class SermondistributorHelperRoute { if ($id > 0) { - // [Interpretation 3829] Initialize the needel array. + // [Interpretation 3909] Initialize the needel array. $needles = array( 'categories' => array((int) $id) ); - // [Interpretation 3833] Create the link + // [Interpretation 3913] Create the link $link = 'index.php?option=com_sermondistributor&view=categories&id='. $id; } else { - // [Interpretation 3838] Initialize the needel array. + // [Interpretation 3918] Initialize the needel array. $needles = array(); - // [Interpretation 3840]Create the link but don't add the id. + // [Interpretation 3920]Create the link but don't add the id. $link = 'index.php?option=com_sermondistributor&view=categories'; } @@ -197,18 +197,18 @@ abstract class SermondistributorHelperRoute { if ($id > 0) { - // [Interpretation 3829] Initialize the needel array. + // [Interpretation 3909] Initialize the needel array. $needles = array( 'category' => array((int) $id) ); - // [Interpretation 3833] Create the link + // [Interpretation 3913] Create the link $link = 'index.php?option=com_sermondistributor&view=category&id='. $id; } else { - // [Interpretation 3838] Initialize the needel array. + // [Interpretation 3918] Initialize the needel array. $needles = array(); - // [Interpretation 3840]Create the link but don't add the id. + // [Interpretation 3920]Create the link but don't add the id. $link = 'index.php?option=com_sermondistributor&view=category'; } @@ -227,18 +227,18 @@ abstract class SermondistributorHelperRoute { if ($id > 0) { - // [Interpretation 3829] Initialize the needel array. + // [Interpretation 3909] Initialize the needel array. $needles = array( 'serieslist' => array((int) $id) ); - // [Interpretation 3833] Create the link + // [Interpretation 3913] Create the link $link = 'index.php?option=com_sermondistributor&view=serieslist&id='. $id; } else { - // [Interpretation 3838] Initialize the needel array. + // [Interpretation 3918] Initialize the needel array. $needles = array(); - // [Interpretation 3840]Create the link but don't add the id. + // [Interpretation 3920]Create the link but don't add the id. $link = 'index.php?option=com_sermondistributor&view=serieslist'; } if ($catid > 1) @@ -268,18 +268,18 @@ abstract class SermondistributorHelperRoute { if ($id > 0) { - // [Interpretation 3829] Initialize the needel array. + // [Interpretation 3909] Initialize the needel array. $needles = array( 'series' => array((int) $id) ); - // [Interpretation 3833] Create the link + // [Interpretation 3913] Create the link $link = 'index.php?option=com_sermondistributor&view=series&id='. $id; } else { - // [Interpretation 3838] Initialize the needel array. + // [Interpretation 3918] Initialize the needel array. $needles = array(); - // [Interpretation 3840]Create the link but don't add the id. + // [Interpretation 3920]Create the link but don't add the id. $link = 'index.php?option=com_sermondistributor&view=series'; } if ($catid > 1) diff --git a/site/helpers/sermondistributor.php b/site/helpers/sermondistributor.php index faa6a46b..b0eec35a 100644 --- a/site/helpers/sermondistributor.php +++ b/site/helpers/sermondistributor.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermondistributor.php @@ -119,7 +119,7 @@ abstract class SermondistributorHelper } $keyCounter = base64_encode($safe->encryptString(json_encode($keyCounter))); $token = JSession::getFormToken(); - $downloadURL = 'index.php?option=com_sermondistributor&task=download.file&key='.$keyCounter.'&token='.$token; + $downloadURL = JURI::root().'index.php?option=com_sermondistributor&task=download.file&key='.$keyCounter.'&token='.$token; // check if local .htaccess should be set $setHtaccess = false; $onclick = ' onclick="sermonCounter(\''.$keyCounter.'\',\'FILENAME\');"'; @@ -151,7 +151,7 @@ abstract class SermondistributorHelper // get the file name use the same method as the auto $filename = self::getDownloadFileName($sermon,$key,'local'); $lockedFolderPath = base64_encode($safe->encryptString($localFolder.$key)); - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$lockedFolderPath.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$lockedFolderPath.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type && $allowDirect) @@ -180,7 +180,7 @@ abstract class SermondistributorHelper { // get the file name use the same method as the auto $filename = self::getDownloadFileName($sermon,$key,'dropbox_manual'); - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$dropURL.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$dropURL.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type && $dropURL) @@ -210,7 +210,7 @@ abstract class SermondistributorHelper if (1 == $sermon->link_type && $dropURL) { // get the file name (use the same method as the auto - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$dropURL.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$dropURL.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type && $dropURL) @@ -234,7 +234,7 @@ abstract class SermondistributorHelper if (1 == $sermon->link_type) { $lockedURL = base64_encode($safe->encryptString($sermon->url)); - $sermon->download_links[$filename] = JRoute::_($downloadURL.'&link='.$lockedURL.'&filename='.$filename); + $sermon->download_links[$filename] = $downloadURL.'&link='.$lockedURL.'&filename='.$filename; $sermon->onclick[$filename] = ''; } elseif (2 == $sermon->link_type) @@ -457,34 +457,37 @@ abstract class SermondistributorHelper } return false; } - - public static function jsonToString($value) + + public static function jsonToString($value, $sperator = ", ", $table = null) { - // check if string is JSON - $result = json_decode($value, true); - if (json_last_error() === JSON_ERROR_NONE) { + // check if string is JSON + $result = json_decode($value, true); + if (json_last_error() === JSON_ERROR_NONE) + { // is JSON - if (self::checkArray($result)) + if (self::checkArray($result)) + { + if (self::checkString($table)) { - $value = ''; - $counter = 0; - foreach ($result as $string) + $names = array(); + foreach ($result as $val) { - if ($counter) + if ($name = self::getVar($table, $val, 'id', 'name')) { - $value .= ", ".$string; + $names[] = $name; } - else - { - $value .= $string; - } - $counter++; } + if (self::checkArray($names)) + { + return (string) implode($sperator,$names); + } } - return json_decode($value); - } - return $value; - } + return (string) implode($sperator,$result); + } + return (string) json_decode($value); + } + return $value; + } /** * Load the Component xml manifest. @@ -561,23 +564,23 @@ abstract class SermondistributorHelper $targetgroups = json_decode($help->groups, true); if (!array_intersect($targetgroups, $groups)) { - // [Interpretation 653] if user not in those target groups then remove the item + // [Interpretation 675] if user not in those target groups then remove the item unset($helps[$nr]); continue; } } - // [Interpretation 658] set the return type + // [Interpretation 680] set the return type switch ($help->type) { - // [Interpretation 661] set joomla article + // [Interpretation 683] set joomla article case 1: return self::loadArticleLink($help->article); break; - // [Interpretation 665] set help text + // [Interpretation 687] set help text case 2: return self::loadHelpTextLink($help->id); break; - // [Interpretation 669] set Link + // [Interpretation 691] set Link case 3: return $help->url; break; @@ -827,7 +830,7 @@ abstract class SermondistributorHelper { if (strpos($content,'class="uk-') !== false) { - // [Interpretation 1909] reset + // [Interpretation 1989] reset $temp = array(); foreach (self::$uk_components as $looking => $add) { @@ -836,15 +839,15 @@ abstract class SermondistributorHelper $temp[] = $looking; } } - // [Interpretation 1918] make sure uikit is loaded to config + // [Interpretation 1998] make sure uikit is loaded to config if (strpos($content,'class="uk-') !== false) { self::$uikit = true; } - // [Interpretation 1923] sorter + // [Interpretation 2003] sorter if (self::checkArray($temp)) { - // [Interpretation 1926] merger + // [Interpretation 2006] merger if (self::checkArray($classes)) { $newTemp = array_merge($temp,$classes); @@ -1429,7 +1432,7 @@ abstract class SermondistributorHelper $w .= ' '; if($r < 100) { - $word .= 'and '; + $w .= 'and '; } $w .= self::numberToString($r); } diff --git a/site/language/en-GB/en-GB.com_sermondistributor.ini b/site/language/en-GB/en-GB.com_sermondistributor.ini index c46648c1..18600956 100644 --- a/site/language/en-GB/en-GB.com_sermondistributor.ini +++ b/site/language/en-GB/en-GB.com_sermondistributor.ini @@ -1,10 +1,12 @@ COM_CONTENT_FIELD_MODIFIED_DESC="The last date this item was modified." COM_SERMONDISTRIBUTOR="Sermon Distributor" +COM_SERMONDISTRIBUTOR_AUDIO_FILE="Audio File" COM_SERMONDISTRIBUTOR_CATEGORIES="Categories" COM_SERMONDISTRIBUTOR_CATEGORIES_DESC="All categories that are published" COM_SERMONDISTRIBUTOR_CATEGORY="Category" COM_SERMONDISTRIBUTOR_CATEGORY_ASC="Category (Asc)" COM_SERMONDISTRIBUTOR_CATEGORY_DESC="Category (Desc)" +COM_SERMONDISTRIBUTOR_CREATE_NEW_S="Create New %s" COM_SERMONDISTRIBUTOR_DESCRIPTION="Description" COM_SERMONDISTRIBUTOR_DOWNLOAD="Download" COM_SERMONDISTRIBUTOR_DOWNLOADS="Downloads" @@ -12,16 +14,21 @@ COM_SERMONDISTRIBUTOR_DOWNLOADS_ASC="Downloads (Asc)" COM_SERMONDISTRIBUTOR_DOWNLOADS_DESC="Downloads (Desc)" COM_SERMONDISTRIBUTOR_DOWNLOAD_COUNTER="Download Counter" COM_SERMONDISTRIBUTOR_DROPBOX="Dropbox" +COM_SERMONDISTRIBUTOR_EDIT_S="Edit %s" COM_SERMONDISTRIBUTOR_EMAIL="Email" COM_SERMONDISTRIBUTOR_FILES="Files" +COM_SERMONDISTRIBUTOR_FLASH_PLUGIN="Flash plugin" COM_SERMONDISTRIBUTOR_GO_TO_WEBSITE_OF="Go to website of" COM_SERMONDISTRIBUTOR_HITS="Hits" COM_SERMONDISTRIBUTOR_HITS_ASC="Hits (Asc)" COM_SERMONDISTRIBUTOR_HITS_DESC="Hits (Desc)" +COM_SERMONDISTRIBUTOR_MAX_VOLUME="max volume" +COM_SERMONDISTRIBUTOR_MUTE="mute" COM_SERMONDISTRIBUTOR_NAME="Name" COM_SERMONDISTRIBUTOR_NAME_ASC="Name (Asc)" COM_SERMONDISTRIBUTOR_NAME_DESC="Name (Desc)" COM_SERMONDISTRIBUTOR_NEW="New" +COM_SERMONDISTRIBUTOR_NEXT="next" COM_SERMONDISTRIBUTOR_NO_CATEGORIES_WERE_FOUND="No categories were found." COM_SERMONDISTRIBUTOR_NO_CATEGORY_WAS_FOUND="No category was found." COM_SERMONDISTRIBUTOR_NO_PREACHERS_WERE_FOUND="No preachers were found." @@ -32,12 +39,15 @@ COM_SERMONDISTRIBUTOR_NO_SERMONS_WERE_FOUND="No sermons were found." COM_SERMONDISTRIBUTOR_NO_SERMON_WAS_FOUND="No sermon was found." COM_SERMONDISTRIBUTOR_OPEN="Open" COM_SERMONDISTRIBUTOR_OPEN_SERMON="Open Sermon" +COM_SERMONDISTRIBUTOR_PLAY="play" COM_SERMONDISTRIBUTOR_PLAY_AUDIO_FILE="Play Audio File" COM_SERMONDISTRIBUTOR_PREACHER="Preacher" COM_SERMONDISTRIBUTOR_PREACHERS="Preachers" COM_SERMONDISTRIBUTOR_PREACHERS_DESC="All preachers that are published" COM_SERMONDISTRIBUTOR_PREACHER_ASC="Preacher (Asc)" COM_SERMONDISTRIBUTOR_PREACHER_DESC="Preacher (Desc)" +COM_SERMONDISTRIBUTOR_PREVIOUS="previous" +COM_SERMONDISTRIBUTOR_REPEAT="repeat" COM_SERMONDISTRIBUTOR_SAVE_TO_YOUR_DROPBOX="Save to your Dropbox" COM_SERMONDISTRIBUTOR_SEND_EMAIL_TO="Send email to" COM_SERMONDISTRIBUTOR_SERIES="Series" @@ -53,7 +63,11 @@ COM_SERMONDISTRIBUTOR_SERMON_DESC="A series that is published" COM_SERMONDISTRIBUTOR_SERMON_DOWNLOAD_COUNT="Sermon Download Count" COM_SERMONDISTRIBUTOR_SERMON_DOWNLOAD_COUNTER_TOTAL="Sermon Download Counter Total" COM_SERMONDISTRIBUTOR_SERMON_TOTAL_DOWNLOADS="Sermon Total Downloads" +COM_SERMONDISTRIBUTOR_SHUFFLE="shuffle" +COM_SERMONDISTRIBUTOR_STOP="stop" COM_SERMONDISTRIBUTOR_TOTAL_DOWNLOADS="Total Downloads" +COM_SERMONDISTRIBUTOR_TO_PLAY_THE_MEDIA_YOU_WILL_NEED_TO_EITHER_UPDATE_YOUR_BROWSER_TO_A_RECENT_VERSION_OR_UPDATE_YOUR="To play the media you will need to either update your browser to a recent version or update your" +COM_SERMONDISTRIBUTOR_UPDATE_REQUIRED="Update Required" COM_SERMONDISTRIBUTOR_WEBSITE="Website" JGLOBAL_FIELD_ID_DESC="Record number in the database." JGLOBAL_FIELD_ID_LABEL="ID" diff --git a/site/layouts/addtodropboxbutton.php b/site/layouts/addtodropboxbutton.php index 65ebdcb4..cd81e04f 100644 --- a/site/layouts/addtodropboxbutton.php +++ b/site/layouts/addtodropboxbutton.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage addtodropboxbutton.php diff --git a/site/layouts/addtodropboxicon.php b/site/layouts/addtodropboxicon.php index d82ebbd8..c3c5216f 100644 --- a/site/layouts/addtodropboxicon.php +++ b/site/layouts/addtodropboxicon.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage addtodropboxicon.php diff --git a/site/layouts/categorieslistitem.php b/site/layouts/categorieslistitem.php index f7fabf2d..abf9fc94 100644 --- a/site/layouts/categorieslistitem.php +++ b/site/layouts/categorieslistitem.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage categorieslistitem.php diff --git a/site/layouts/categoriespanel.php b/site/layouts/categoriespanel.php index afb5ec66..ab6fa72e 100644 --- a/site/layouts/categoriespanel.php +++ b/site/layouts/categoriespanel.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage categoriespanel.php diff --git a/site/layouts/categoriesrow.php b/site/layouts/categoriesrow.php index 7fe2e33f..ea73c7cf 100644 --- a/site/layouts/categoriesrow.php +++ b/site/layouts/categoriesrow.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage categoriesrow.php diff --git a/site/layouts/downloadsermonbutton.php b/site/layouts/downloadsermonbutton.php index 641608b3..d60b71b5 100644 --- a/site/layouts/downloadsermonbutton.php +++ b/site/layouts/downloadsermonbutton.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage downloadsermonbutton.php diff --git a/site/layouts/isnew.php b/site/layouts/isnew.php index d78b909c..da67a415 100644 --- a/site/layouts/isnew.php +++ b/site/layouts/isnew.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage isnew.php diff --git a/site/layouts/jplayerbluemonday.php b/site/layouts/jplayerbluemonday.php new file mode 100644 index 00000000..6786a188 --- /dev/null +++ b/site/layouts/jplayerbluemonday.php @@ -0,0 +1,94 @@ + + @copyright Copyright (C) 2015. All Rights Reserved + @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html + + A sermon distributor that links to Dropbox. + +/-----------------------------------------------------------------------------------------------------------------------------*/ + +// No direct access to this file + +defined('JPATH_BASE') or die('Restricted access'); + +$random = SermondistributorHelper::randomkey(5); +if (isset($displayData['script']) && SermondistributorHelper::checkArray($displayData['script'])) +{ + $script = array(); + $script[] = 'jQuery(document).ready(function(){'; + $script[] = 'jQuery("#jquery_jplayer_'.$random.'").jPlayer({'; + $script[] = 'ready: function (event) {'; + $script[] = 'jQuery(this).jPlayer("setMedia", {'; + $script[] = implode('', $displayData['script']); + $script[] = '}); },'; + $script[] = 'cssSelectorAncestor: "#jp_container_'.$random.'",'; + $script[] = 'swfPath: "'.$displayData['swfPath'].'",'; + $script[] = 'supplied: "'.implode(', ', $displayData['supplied']).'",'; + $script[] = 'wmode: "window", preload: "auto",'; + $script[] = 'useStateClassSkin: true,'; + $script[] = 'autoBlur: false,'; + $script[] = 'smoothPlayBar: true,'; + $script[] = 'keyEnabled: true,'; + $script[] = 'remainingDuration: true,'; + $script[] = 'toggleDuration: true'; + $script[] = '}); });'; + // get the document + $document = JFactory::getDocument(); + // add script to document header + $document->addScriptDeclaration(implode("\n", $script)); +} + +?> + + diff --git a/site/layouts/jplayerbluemondaylist.php b/site/layouts/jplayerbluemondaylist.php new file mode 100644 index 00000000..348e7e1e --- /dev/null +++ b/site/layouts/jplayerbluemondaylist.php @@ -0,0 +1,97 @@ + + @copyright Copyright (C) 2015. All Rights Reserved + @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html + + A sermon distributor that links to Dropbox. + +/-----------------------------------------------------------------------------------------------------------------------------*/ + +// No direct access to this file + +defined('JPATH_BASE') or die('Restricted access'); + +$random = SermondistributorHelper::randomkey(5); +if (isset($displayData['script']) && SermondistributorHelper::checkArray($displayData['script'])) +{ + $script = array(); + $script[] = 'jQuery(document).ready(function(){'; + $script[] = 'new jPlayerPlaylist({'; + $script[] = 'jPlayer: "#jquery_jplayer_list_'.$random.'",'; + $script[] = 'cssSelectorAncestor: "#jp_container_list_'.$random.'"'; + $script[] = '}, [ {'; + $script[] = implode('}, {', $displayData['script']); + $script[] = '} ], {'; + $script[] = 'swfPath: "'.$displayData['swfPath'].'",'; + $script[] = 'supplied: "'.implode(', ', $displayData['supplied']).'",'; + $script[] = 'wmode: "window",'; + $script[] = 'useStateClassSkin: true,'; + $script[] = 'autoBlur: false,'; + $script[] = 'smoothPlayBar: true,'; + $script[] = 'keyEnabled: true'; + $script[] = '}); });'; + // get the document + $document = JFactory::getDocument(); + // add script to document header + $document->addScriptDeclaration(implode("\n", $script)); +} + +?> + + diff --git a/site/layouts/mediaplayer.php b/site/layouts/mediaplayer.php index 621a4e61..1496a332 100644 --- a/site/layouts/mediaplayer.php +++ b/site/layouts/mediaplayer.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage mediaplayer.php @@ -33,8 +33,10 @@ if (isset($displayData->download_links) && count($displayData->download_links)) { foreach ($displayData->download_links as $filename => $link) { - if (strpos($filename, '.mp3') !== false) // TODO only mp3 at this time + if (1 == $displayData->playerKey && strpos($filename, '.mp3') !== false) // TODO only mp3 at this time { + // use sound manager + $audio = array(); $audio['link'] = $link; if (1 == count($displayData->download_links)) { @@ -45,13 +47,56 @@ if (isset($displayData->download_links) && count($displayData->download_links)) $audio['name'] = JText::_('COM_SERMONDISTRIBUTOR_PLAY_AUDIO_FILE').' '.$num; } $audio['filename'] = $filename; - $players[] = JLayoutHelper::render('audioplayer', $audio); + $players[] = JLayoutHelper::render('soundmanagerthreesixty', $audio); $num++; } + elseif (2 == $displayData->playerKey) + { + // use jPlayer + if (1 == count($displayData->download_links)) + { + $name = JText::_('COM_SERMONDISTRIBUTOR_AUDIO_FILE'); + } + else + { + $name = JText::_('COM_SERMONDISTRIBUTOR_AUDIO_FILE').' '.$num; + } + if (!isset($players['script'])) + { + $players['script'] = array(); + $players['supplied'] = array(); + } + if (strpos($filename, '.mp3') !== false) + { + $players['script'][] = 'title: "'.$name.'", mp3: "'.$link.'"'; + $players['supplied'][] = 'mp3'; + } + elseif (strpos($filename, '.m4a') !== false) + { + $players['script'][] = 'title: "'.$name.'", m4a: "'.$link.'"'; + $players['supplied'][] = 'm4a'; + } + $num++; + } + } + // use jPlayer layout + if (isset($players['script']) && SermondistributorHelper::checkArray($players['script'])) + { + $players['swfPath'] = JURI::root() .'media/com_sermondistributor/jplayer/jplayer'; + if (2 == $displayData->playerKey&& 1 == count($displayData->download_links)) + { + $players = JLayoutHelper::render('jplayerbluemonday', $players); + } + elseif (2 == $displayData->playerKey && count($displayData->download_links) > 1) + { + $players = JLayoutHelper::render('jplayerbluemondaylist', $players); + } } } ?> - +playerKey && SermondistributorHelper::checkArray($players)): ?>
  • +playerKey && SermondistributorHelper::checkString($players)): ?> +
    diff --git a/site/layouts/opensermonbutton.php b/site/layouts/opensermonbutton.php index 6580ff91..dbdeb326 100644 --- a/site/layouts/opensermonbutton.php +++ b/site/layouts/opensermonbutton.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage opensermonbutton.php diff --git a/site/layouts/preacherslistitem.php b/site/layouts/preacherslistitem.php index 319cbef5..30bc7c4f 100644 --- a/site/layouts/preacherslistitem.php +++ b/site/layouts/preacherslistitem.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacherslistitem.php diff --git a/site/layouts/preacherspanel.php b/site/layouts/preacherspanel.php index 5d46f272..6fde7267 100644 --- a/site/layouts/preacherspanel.php +++ b/site/layouts/preacherspanel.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacherspanel.php diff --git a/site/layouts/preachersrow.php b/site/layouts/preachersrow.php index 5fd55a80..51053c64 100644 --- a/site/layouts/preachersrow.php +++ b/site/layouts/preachersrow.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preachersrow.php diff --git a/site/layouts/serieslistitem.php b/site/layouts/serieslistitem.php index 943526e9..05747d30 100644 --- a/site/layouts/serieslistitem.php +++ b/site/layouts/serieslistitem.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage serieslistitem.php diff --git a/site/layouts/seriespanel.php b/site/layouts/seriespanel.php index 751c13ea..fc94ce9a 100644 --- a/site/layouts/seriespanel.php +++ b/site/layouts/seriespanel.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage seriespanel.php diff --git a/site/layouts/seriesrow.php b/site/layouts/seriesrow.php index 1c8f3d2b..14689453 100644 --- a/site/layouts/seriesrow.php +++ b/site/layouts/seriesrow.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage seriesrow.php diff --git a/site/layouts/sermonslistitem.php b/site/layouts/sermonslistitem.php index 4ee61077..4099e4d2 100644 --- a/site/layouts/sermonslistitem.php +++ b/site/layouts/sermonslistitem.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermonslistitem.php diff --git a/site/layouts/sermonspanel.php b/site/layouts/sermonspanel.php index 4611fccd..9fab9ebd 100644 --- a/site/layouts/sermonspanel.php +++ b/site/layouts/sermonspanel.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermonspanel.php diff --git a/site/layouts/sermonsrow.php b/site/layouts/sermonsrow.php index 1c5b5407..6eb378c0 100644 --- a/site/layouts/sermonsrow.php +++ b/site/layouts/sermonsrow.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermonsrow.php diff --git a/site/layouts/audioplayer.php b/site/layouts/soundmanagerthreesixty.php similarity index 95% rename from site/layouts/audioplayer.php rename to site/layouts/soundmanagerthreesixty.php index 2ab47167..78231e87 100644 --- a/site/layouts/audioplayer.php +++ b/site/layouts/soundmanagerthreesixty.php @@ -11,10 +11,10 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor - @subpackage audioplayer.php + @subpackage soundmanagerthreesixty.php @author Llewellyn van der Merwe @copyright Copyright (C) 2015. All Rights Reserved @license GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html diff --git a/site/models/ajax.php b/site/models/ajax.php index 7bb24351..0edc1477 100644 --- a/site/models/ajax.php +++ b/site/models/ajax.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage ajax.php @@ -43,7 +43,7 @@ class SermondistributorModelAjax extends JModelList } - // [Interpretation 8239] Used in sermon + // [Interpretation 8452] Used in sermon /** * Check and Set Dropbox local listing **/ diff --git a/site/models/categories.php b/site/models/categories.php index 1f238f33..be9d5b00 100644 --- a/site/models/categories.php +++ b/site/models/categories.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage categories.php @@ -65,13 +65,13 @@ class SermondistributorModelCategories extends JModelList $this->app = JFactory::getApplication(); $this->input = $this->app->input; $this->initSet = true; - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__categories as a + // [Interpretation 1152] Get from #__categories as a $query->select($db->quoteName( array('a.id','a.title','a.alias','a.description','a.hits','a.language'), array('id','name','alias','description','hits','language'))); @@ -81,7 +81,7 @@ class SermondistributorModelCategories extends JModelList $query->where('a.extension = "com_sermondistributor.sermons"'); $query->order('a.title ASC'); - // [Interpretation 2242] return the query object + // [Interpretation 2322] return the query object return $query; } @@ -107,12 +107,12 @@ class SermondistributorModelCategories extends JModelList // Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; - // [Interpretation 1322] set idCatidSermonB to the $item object. + // [Interpretation 1402] set idCatidSermonB to the $item object. $item->idCatidSermonB = $this->getIdCatidSermonBced_B($item->id); } @@ -141,13 +141,13 @@ class SermondistributorModelCategories extends JModelList */ public function getIdCatidSermonBced_B($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_sermon as b + // [Interpretation 2098] Get from #__sermondistributor_sermon as b $query->select($db->quoteName( array('b.id'), array('id'))); @@ -156,11 +156,11 @@ class SermondistributorModelCategories extends JModelList $query->where('b.access IN (' . implode(',', $this->levels) . ')'); $query->where('b.published = 1'); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); diff --git a/site/models/category.php b/site/models/category.php index be8bbc9a..692d6c97 100644 --- a/site/models/category.php +++ b/site/models/category.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage category.php @@ -65,37 +65,37 @@ class SermondistributorModelCategory extends JModelList $this->app = JFactory::getApplication(); $this->input = $this->app->input; $this->initSet = true; - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_sermon as a + // [Interpretation 1152] Get from #__sermondistributor_sermon as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.link_type','a.short_description','a.icon','a.preacher','a.series','a.catid','a.description','a.source','a.build','a.manual_files','a.local_files','a.url','a.auto_sermons','a.published','a.created_by','a.modified_by','a.created','a.modified','a.version','a.hits','a.ordering'), array('id','asset_id','name','alias','link_type','short_description','icon','preacher','series','catid','description','source','build','manual_files','local_files','url','auto_sermons','published','created_by','modified_by','created','modified','version','hits','ordering'))); $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); - // [Interpretation 1072] Get from #__sermondistributor_preacher as c + // [Interpretation 1152] Get from #__sermondistributor_preacher as c $query->select($db->quoteName( array('c.name','c.alias'), array('preacher_name','preacher_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_preacher', 'c')) . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('c.id') . ')'); - // [Interpretation 1072] Get from #__sermondistributor_series as d + // [Interpretation 1152] Get from #__sermondistributor_series as d $query->select($db->quoteName( array('d.name','d.alias'), array('series_name','series_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_series', 'd')) . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('d.id') . ')'); - // [Interpretation 1072] Get from #__categories as b + // [Interpretation 1152] Get from #__categories as b $query->select($db->quoteName( array('b.title'), array('category'))); $query->join('LEFT', ($db->quoteName('#__categories', 'b')) . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('b.id') . ')'); $query->where('a.access IN (' . implode(',', $this->levels) . ')'); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -112,7 +112,7 @@ class SermondistributorModelCategory extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 2242] return the query object + // [Interpretation 2322] return the query object return $query; } @@ -138,26 +138,26 @@ class SermondistributorModelCategory extends JModelList // Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; if (SermondistributorHelper::checkString($item->local_files)) { - // [Interpretation 1274] Decode local_files + // [Interpretation 1354] Decode local_files $item->local_files = json_decode($item->local_files, true); } if (SermondistributorHelper::checkString($item->manual_files)) { - // [Interpretation 1274] Decode manual_files + // [Interpretation 1354] Decode manual_files $item->manual_files = json_decode($item->manual_files, true); } - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $item->description = JHtml::_('content.prepare',$item->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($item->description,$this->uikitComp); - // [Interpretation 1322] set idSermonStatisticE to the $item object. + // [Interpretation 1402] set idSermonStatisticE to the $item object. $item->idSermonStatisticE = $this->getIdSermonStatisticBcea_E($item->id); } @@ -218,24 +218,24 @@ class SermondistributorModelCategory extends JModelList */ public function getIdSermonStatisticBcea_E($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_statistic as e + // [Interpretation 2098] Get from #__sermondistributor_statistic as e $query->select($db->quoteName( array('e.filename','e.sermon','e.preacher','e.series','e.counter'), array('filename','sermon','preacher','series','counter'))); $query->from($db->quoteName('#__sermondistributor_statistic', 'e')); $query->where('e.sermon = ' . $db->quote($id)); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); @@ -263,18 +263,18 @@ class SermondistributorModelCategory extends JModelList $this->levels = $this->user->getAuthorisedViewLevels(); $this->initSet = true; } - // [Interpretation 1634] Get a db connection. + // [Interpretation 1714] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 1636] Create a new query object. + // [Interpretation 1716] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__categories as a + // [Interpretation 1152] Get from #__categories as a $query->select($db->quoteName( array('a.id','a.parent_id','a.lft','a.rgt','a.level','a.title','a.alias','a.note','a.description','a.params','a.metadesc','a.metakey','a.metadata','a.hits','a.language','a.version'), array('id','parent_id','lft','rgt','level','name','alias','note','description','params','metadesc','metakey','metadata','hits','language','version'))); $query->from($db->quoteName('#__categories', 'a')); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -291,19 +291,19 @@ class SermondistributorModelCategory extends JModelList $query->where('a.published = 1'); $query->order('a.title ASC'); - // [Interpretation 1647] Reset the query using our newly populated query object. + // [Interpretation 1727] Reset the query using our newly populated query object. $db->setQuery($query); - // [Interpretation 1649] Load the results as a stdClass object. + // [Interpretation 1729] Load the results as a stdClass object. $data = $db->loadObject(); if (empty($data)) { return false; } - // [Interpretation 1322] set idCatidSermonB to the $data object. + // [Interpretation 1402] set idCatidSermonB to the $data object. $data->idCatidSermonB = $this->getIdCatidSermonFbdf_B($data->id); - // [Interpretation 1748] return data object. + // [Interpretation 1828] return data object. return $data; } @@ -315,32 +315,32 @@ class SermondistributorModelCategory extends JModelList */ public function getIdCatidSermonFbdf_B($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_sermon as b + // [Interpretation 2098] Get from #__sermondistributor_sermon as b $query->select($db->quoteName( array('b.id'), array('id'))); $query->from($db->quoteName('#__sermondistributor_sermon', 'b')); $query->where('b.catid = ' . $db->quote($id)); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { $items = $db->loadObjectList(); - // [Interpretation 2128] Convert the parameter fields into objects. + // [Interpretation 2208] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 1310] set idSermonStatisticC to the $item object. + // [Interpretation 1390] set idSermonStatisticC to the $item object. $item->idSermonStatisticC = $this->getIdSermonStatisticFbdf_C($item->id); } return $items; @@ -356,24 +356,24 @@ class SermondistributorModelCategory extends JModelList */ public function getIdSermonStatisticFbdf_C($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_statistic as c + // [Interpretation 2098] Get from #__sermondistributor_statistic as c $query->select($db->quoteName( array('c.counter'), array('counter'))); $query->from($db->quoteName('#__sermondistributor_statistic', 'c')); $query->where('c.sermon = ' . $db->quote($id)); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); diff --git a/site/models/preacher.php b/site/models/preacher.php index e9263252..667e7482 100644 --- a/site/models/preacher.php +++ b/site/models/preacher.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preacher.php @@ -65,36 +65,36 @@ class SermondistributorModelPreacher extends JModelList $this->app = JFactory::getApplication(); $this->input = $this->app->input; $this->initSet = true; - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_sermon as a + // [Interpretation 1152] Get from #__sermondistributor_sermon as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.link_type','a.short_description','a.icon','a.preacher','a.series','a.catid','a.description','a.source','a.build','a.manual_files','a.local_files','a.url','a.auto_sermons','a.published','a.created_by','a.modified_by','a.created','a.modified','a.version','a.hits','a.ordering'), array('id','asset_id','name','alias','link_type','short_description','icon','preacher','series','catid','description','source','build','manual_files','local_files','url','auto_sermons','published','created_by','modified_by','created','modified','version','hits','ordering'))); $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); - // [Interpretation 1072] Get from #__sermondistributor_series as c + // [Interpretation 1152] Get from #__sermondistributor_series as c $query->select($db->quoteName( array('c.name','c.alias'), array('series_name','series_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_series', 'c')) . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('c.id') . ')'); - // [Interpretation 1072] Get from #__sermondistributor_preacher as d + // [Interpretation 1152] Get from #__sermondistributor_preacher as d $query->select($db->quoteName( array('d.name','d.alias'), array('preacher_name','preacher_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_preacher', 'd')) . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('d.id') . ')'); - // [Interpretation 1072] Get from #__categories as b + // [Interpretation 1152] Get from #__categories as b $query->select($db->quoteName( array('b.title','b.alias'), array('category','category_alias'))); $query->join('LEFT', ($db->quoteName('#__categories', 'b')) . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('b.id') . ')'); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -112,7 +112,7 @@ class SermondistributorModelPreacher extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 2242] return the query object + // [Interpretation 2322] return the query object return $query; } @@ -138,26 +138,26 @@ class SermondistributorModelPreacher extends JModelList // Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; if (SermondistributorHelper::checkString($item->local_files)) { - // [Interpretation 1274] Decode local_files + // [Interpretation 1354] Decode local_files $item->local_files = json_decode($item->local_files, true); } if (SermondistributorHelper::checkString($item->manual_files)) { - // [Interpretation 1274] Decode manual_files + // [Interpretation 1354] Decode manual_files $item->manual_files = json_decode($item->manual_files, true); } - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $item->description = JHtml::_('content.prepare',$item->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($item->description,$this->uikitComp); - // [Interpretation 1322] set idSermonStatisticE to the $item object. + // [Interpretation 1402] set idSermonStatisticE to the $item object. $item->idSermonStatisticE = $this->getIdSermonStatisticFcff_E($item->id); } @@ -218,24 +218,24 @@ class SermondistributorModelPreacher extends JModelList */ public function getIdSermonStatisticFcff_E($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_statistic as e + // [Interpretation 2098] Get from #__sermondistributor_statistic as e $query->select($db->quoteName( array('e.filename','e.sermon','e.preacher','e.series','e.counter'), array('filename','sermon','preacher','series','counter'))); $query->from($db->quoteName('#__sermondistributor_statistic', 'e')); $query->where('e.sermon = ' . $db->quote($id)); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); @@ -263,19 +263,19 @@ class SermondistributorModelPreacher extends JModelList $this->levels = $this->user->getAuthorisedViewLevels(); $this->initSet = true; } - // [Interpretation 1634] Get a db connection. + // [Interpretation 1714] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 1636] Create a new query object. + // [Interpretation 1716] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_preacher as a + // [Interpretation 1152] Get from #__sermondistributor_preacher as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.icon','a.email','a.website','a.description','a.published','a.created_by','a.modified_by','a.created','a.modified','a.version','a.hits','a.ordering','a.metadesc','a.metakey','a.metadata'), array('id','asset_id','name','alias','icon','email','website','description','published','created_by','modified_by','created','modified','version','hits','ordering','metadesc','metakey','metadata'))); $query->from($db->quoteName('#__sermondistributor_preacher', 'a')); $query->where('a.access IN (' . implode(',', $this->levels) . ')'); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -292,21 +292,21 @@ class SermondistributorModelPreacher extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 1647] Reset the query using our newly populated query object. + // [Interpretation 1727] Reset the query using our newly populated query object. $db->setQuery($query); - // [Interpretation 1649] Load the results as a stdClass object. + // [Interpretation 1729] Load the results as a stdClass object. $data = $db->loadObject(); if (empty($data)) { return false; } - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $data->description = JHtml::_('content.prepare',$data->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($data->description,$this->uikitComp); - // [Interpretation 1748] return data object. + // [Interpretation 1828] return data object. return $data; } @@ -331,20 +331,20 @@ class SermondistributorModelPreacher extends JModelList $this->initSet = true; } - // [Interpretation 1804] Get the global params + // [Interpretation 1884] Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_statistic as a + // [Interpretation 1152] Get from #__sermondistributor_statistic as a $query->select($db->quoteName( array('a.id','a.counter'), array('id','counter'))); $query->from($db->quoteName('#__sermondistributor_statistic', 'a')); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -361,7 +361,7 @@ class SermondistributorModelPreacher extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 1809] Reset the query using our newly populated query object. + // [Interpretation 1889] Reset the query using our newly populated query object. $db->setQuery($query); $items = $db->loadObjectList(); @@ -370,13 +370,13 @@ class SermondistributorModelPreacher extends JModelList return false; } - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; } - // [Interpretation 1818] return items + // [Interpretation 1898] return items return $items; } @@ -401,20 +401,20 @@ class SermondistributorModelPreacher extends JModelList $this->initSet = true; } - // [Interpretation 1804] Get the global params + // [Interpretation 1884] Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_sermon as a + // [Interpretation 1152] Get from #__sermondistributor_sermon as a $query->select($db->quoteName( array('a.id','a.alias','a.preacher'), array('id','alias','preacher'))); $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -432,7 +432,7 @@ class SermondistributorModelPreacher extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 1809] Reset the query using our newly populated query object. + // [Interpretation 1889] Reset the query using our newly populated query object. $db->setQuery($query); $items = $db->loadObjectList(); @@ -441,13 +441,13 @@ class SermondistributorModelPreacher extends JModelList return false; } - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; } - // [Interpretation 1818] return items + // [Interpretation 1898] return items return $items; } diff --git a/site/models/preachers.php b/site/models/preachers.php index 39da6807..11af4f11 100644 --- a/site/models/preachers.php +++ b/site/models/preachers.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage preachers.php @@ -65,13 +65,13 @@ class SermondistributorModelPreachers extends JModelList $this->app = JFactory::getApplication(); $this->input = $this->app->input; $this->initSet = true; - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_preacher as a + // [Interpretation 1152] Get from #__sermondistributor_preacher as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.icon','a.email','a.website','a.description','a.hits','a.ordering'), array('id','asset_id','name','alias','icon','email','website','description','hits','ordering'))); @@ -80,7 +80,7 @@ class SermondistributorModelPreachers extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 2242] return the query object + // [Interpretation 2322] return the query object return $query; } @@ -106,16 +106,16 @@ class SermondistributorModelPreachers extends JModelList // Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $item->description = JHtml::_('content.prepare',$item->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($item->description,$this->uikitComp); - // [Interpretation 1322] set idPreacherSermonB to the $item object. + // [Interpretation 1402] set idPreacherSermonB to the $item object. $item->idPreacherSermonB = $this->getIdPreacherSermonDcaa_B($item->id); } @@ -144,13 +144,13 @@ class SermondistributorModelPreachers extends JModelList */ public function getIdPreacherSermonDcaa_B($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_sermon as b + // [Interpretation 2098] Get from #__sermondistributor_sermon as b $query->select($db->quoteName( array('b.id'), array('id'))); @@ -159,11 +159,11 @@ class SermondistributorModelPreachers extends JModelList $query->where('b.access IN (' . implode(',', $this->levels) . ')'); $query->where('b.published = 1'); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); diff --git a/site/models/series.php b/site/models/series.php index f8db32fa..79fd7e07 100644 --- a/site/models/series.php +++ b/site/models/series.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage series.php @@ -65,37 +65,37 @@ class SermondistributorModelSeries extends JModelList $this->app = JFactory::getApplication(); $this->input = $this->app->input; $this->initSet = true; - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_sermon as a + // [Interpretation 1152] Get from #__sermondistributor_sermon as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.link_type','a.short_description','a.icon','a.preacher','a.series','a.catid','a.description','a.source','a.build','a.manual_files','a.local_files','a.url','a.auto_sermons','a.published','a.created_by','a.modified_by','a.created','a.modified','a.version','a.hits','a.ordering'), array('id','asset_id','name','alias','link_type','short_description','icon','preacher','series','catid','description','source','build','manual_files','local_files','url','auto_sermons','published','created_by','modified_by','created','modified','version','hits','ordering'))); $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); - // [Interpretation 1072] Get from #__sermondistributor_preacher as c + // [Interpretation 1152] Get from #__sermondistributor_preacher as c $query->select($db->quoteName( array('c.name','c.alias'), array('preacher_name','preacher_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_preacher', 'c')) . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('c.id') . ')'); - // [Interpretation 1072] Get from #__sermondistributor_series as d + // [Interpretation 1152] Get from #__sermondistributor_series as d $query->select($db->quoteName( array('d.name','d.alias'), array('series_name','series_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_series', 'd')) . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('d.id') . ')'); - // [Interpretation 1072] Get from #__categories as b + // [Interpretation 1152] Get from #__categories as b $query->select($db->quoteName( array('b.title','b.alias'), array('category','category_alias'))); $query->join('LEFT', ($db->quoteName('#__categories', 'b')) . ' ON (' . $db->quoteName('a.catid') . ' = ' . $db->quoteName('b.id') . ')'); $query->where('a.access IN (' . implode(',', $this->levels) . ')'); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -112,7 +112,7 @@ class SermondistributorModelSeries extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 2242] return the query object + // [Interpretation 2322] return the query object return $query; } @@ -138,26 +138,26 @@ class SermondistributorModelSeries extends JModelList // Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; if (SermondistributorHelper::checkString($item->local_files)) { - // [Interpretation 1274] Decode local_files + // [Interpretation 1354] Decode local_files $item->local_files = json_decode($item->local_files, true); } if (SermondistributorHelper::checkString($item->manual_files)) { - // [Interpretation 1274] Decode manual_files + // [Interpretation 1354] Decode manual_files $item->manual_files = json_decode($item->manual_files, true); } - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $item->description = JHtml::_('content.prepare',$item->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($item->description,$this->uikitComp); - // [Interpretation 1322] set idSermonStatisticE to the $item object. + // [Interpretation 1402] set idSermonStatisticE to the $item object. $item->idSermonStatisticE = $this->getIdSermonStatisticEfeb_E($item->id); } @@ -218,24 +218,24 @@ class SermondistributorModelSeries extends JModelList */ public function getIdSermonStatisticEfeb_E($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_statistic as e + // [Interpretation 2098] Get from #__sermondistributor_statistic as e $query->select($db->quoteName( array('e.filename','e.sermon','e.preacher','e.series','e.counter'), array('filename','sermon','preacher','series','counter'))); $query->from($db->quoteName('#__sermondistributor_statistic', 'e')); $query->where('e.sermon = ' . $db->quote($id)); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); @@ -263,19 +263,19 @@ class SermondistributorModelSeries extends JModelList $this->levels = $this->user->getAuthorisedViewLevels(); $this->initSet = true; } - // [Interpretation 1634] Get a db connection. + // [Interpretation 1714] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 1636] Create a new query object. + // [Interpretation 1716] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_series as a + // [Interpretation 1152] Get from #__sermondistributor_series as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.description','a.icon','a.published','a.created_by','a.modified_by','a.created','a.modified','a.version','a.hits','a.ordering','a.metadesc','a.metakey','a.metadata'), array('id','asset_id','name','alias','description','icon','published','created_by','modified_by','created','modified','version','hits','ordering','metadesc','metakey','metadata'))); $query->from($db->quoteName('#__sermondistributor_series', 'a')); $query->where('a.access IN (' . implode(',', $this->levels) . ')'); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -292,21 +292,21 @@ class SermondistributorModelSeries extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 1647] Reset the query using our newly populated query object. + // [Interpretation 1727] Reset the query using our newly populated query object. $db->setQuery($query); - // [Interpretation 1649] Load the results as a stdClass object. + // [Interpretation 1729] Load the results as a stdClass object. $data = $db->loadObject(); if (empty($data)) { return false; } - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $data->description = JHtml::_('content.prepare',$data->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($data->description,$this->uikitComp); - // [Interpretation 1748] return data object. + // [Interpretation 1828] return data object. return $data; } @@ -331,20 +331,20 @@ class SermondistributorModelSeries extends JModelList $this->initSet = true; } - // [Interpretation 1804] Get the global params + // [Interpretation 1884] Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_statistic as a + // [Interpretation 1152] Get from #__sermondistributor_statistic as a $query->select($db->quoteName( array('a.id','a.counter'), array('id','counter'))); $query->from($db->quoteName('#__sermondistributor_statistic', 'a')); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -361,7 +361,7 @@ class SermondistributorModelSeries extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 1809] Reset the query using our newly populated query object. + // [Interpretation 1889] Reset the query using our newly populated query object. $db->setQuery($query); $items = $db->loadObjectList(); @@ -370,13 +370,13 @@ class SermondistributorModelSeries extends JModelList return false; } - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; } - // [Interpretation 1818] return items + // [Interpretation 1898] return items return $items; } @@ -401,20 +401,20 @@ class SermondistributorModelSeries extends JModelList $this->initSet = true; } - // [Interpretation 1804] Get the global params + // [Interpretation 1884] Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_sermon as a + // [Interpretation 1152] Get from #__sermondistributor_sermon as a $query->select($db->quoteName( array('a.id','a.alias','a.series'), array('id','alias','series'))); $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); - // [Interpretation 1417] Check if JRequest::getInt('id') is a string or numeric value. + // [Interpretation 1497] Check if JRequest::getInt('id') is a string or numeric value. $checkValue = JRequest::getInt('id'); if (isset($checkValue) && SermondistributorHelper::checkString($checkValue)) { @@ -432,7 +432,7 @@ class SermondistributorModelSeries extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 1809] Reset the query using our newly populated query object. + // [Interpretation 1889] Reset the query using our newly populated query object. $db->setQuery($query); $items = $db->loadObjectList(); @@ -441,13 +441,13 @@ class SermondistributorModelSeries extends JModelList return false; } - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; } - // [Interpretation 1818] return items + // [Interpretation 1898] return items return $items; } diff --git a/site/models/serieslist.php b/site/models/serieslist.php index f86298ff..0e99d757 100644 --- a/site/models/serieslist.php +++ b/site/models/serieslist.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage serieslist.php @@ -65,13 +65,13 @@ class SermondistributorModelSerieslist extends JModelList $this->app = JFactory::getApplication(); $this->input = $this->app->input; $this->initSet = true; - // [Interpretation 2212] Get a db connection. + // [Interpretation 2292] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2221] Create a new query object. + // [Interpretation 2301] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_series as a + // [Interpretation 1152] Get from #__sermondistributor_series as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.description','a.icon','a.hits','a.ordering'), array('id','asset_id','name','alias','description','icon','hits','ordering'))); @@ -80,7 +80,7 @@ class SermondistributorModelSerieslist extends JModelList $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 2242] return the query object + // [Interpretation 2322] return the query object return $query; } @@ -106,16 +106,16 @@ class SermondistributorModelSerieslist extends JModelList // Get the global params $globalParams = JComponentHelper::getParams('com_sermondistributor', true); - // [Interpretation 2262] Convert the parameter fields into objects. + // [Interpretation 2342] Convert the parameter fields into objects. foreach ($items as $nr => &$item) { - // [Interpretation 2265] Always create a slug for sef URL's + // [Interpretation 2345] Always create a slug for sef URL's $item->slug = (isset($item->alias)) ? $item->id.':'.$item->alias : $item->id; - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $item->description = JHtml::_('content.prepare',$item->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($item->description,$this->uikitComp); - // [Interpretation 1322] set idSeriesSermonB to the $item object. + // [Interpretation 1402] set idSeriesSermonB to the $item object. $item->idSeriesSermonB = $this->getIdSeriesSermonBcae_B($item->id); } @@ -144,13 +144,13 @@ class SermondistributorModelSerieslist extends JModelList */ public function getIdSeriesSermonBcae_B($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_sermon as b + // [Interpretation 2098] Get from #__sermondistributor_sermon as b $query->select($db->quoteName( array('b.id'), array('id'))); @@ -159,11 +159,11 @@ class SermondistributorModelSerieslist extends JModelList $query->where('b.access IN (' . implode(',', $this->levels) . ')'); $query->where('b.published = 1'); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); diff --git a/site/models/sermon.php b/site/models/sermon.php index d9d3357c..a7b3e343 100644 --- a/site/models/sermon.php +++ b/site/models/sermon.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermon.php @@ -119,31 +119,31 @@ class SermondistributorModelSermon extends JModelItem { try { - // [Interpretation 1634] Get a db connection. + // [Interpretation 1714] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 1636] Create a new query object. + // [Interpretation 1716] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 1072] Get from #__sermondistributor_sermon as a + // [Interpretation 1152] Get from #__sermondistributor_sermon as a $query->select($db->quoteName( array('a.id','a.asset_id','a.name','a.alias','a.preacher','a.short_description','a.icon','a.scripture','a.series','a.catid','a.description','a.link_type','a.source','a.build','a.manual_files','a.local_files','a.url','a.not_required','a.auto_sermons','a.published','a.created_by','a.modified_by','a.created','a.modified','a.version','a.hits','a.ordering','a.metadesc','a.metakey','a.metadata'), array('id','asset_id','name','alias','preacher','short_description','icon','scripture','series','catid','description','link_type','source','build','manual_files','local_files','url','not_required','auto_sermons','published','created_by','modified_by','created','modified','version','hits','ordering','metadesc','metakey','metadata'))); $query->from($db->quoteName('#__sermondistributor_sermon', 'a')); - // [Interpretation 1072] Get from #__sermondistributor_series as b + // [Interpretation 1152] Get from #__sermondistributor_series as b $query->select($db->quoteName( array('b.name','b.alias'), array('series_name','series_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_series', 'b')) . ' ON (' . $db->quoteName('a.series') . ' = ' . $db->quoteName('b.id') . ')'); - // [Interpretation 1072] Get from #__sermondistributor_preacher as c + // [Interpretation 1152] Get from #__sermondistributor_preacher as c $query->select($db->quoteName( array('c.name','c.alias'), array('preacher_name','preacher_alias'))); $query->join('LEFT', ($db->quoteName('#__sermondistributor_preacher', 'c')) . ' ON (' . $db->quoteName('a.preacher') . ' = ' . $db->quoteName('c.id') . ')'); - // [Interpretation 1072] Get from #__categories as e + // [Interpretation 1152] Get from #__categories as e $query->select($db->quoteName( array('e.alias','e.title'), array('category_alias','category'))); @@ -153,38 +153,38 @@ class SermondistributorModelSermon extends JModelItem $query->where('a.published = 1'); $query->order('a.ordering ASC'); - // [Interpretation 1647] Reset the query using our newly populated query object. + // [Interpretation 1727] Reset the query using our newly populated query object. $db->setQuery($query); - // [Interpretation 1649] Load the results as a stdClass object. + // [Interpretation 1729] Load the results as a stdClass object. $data = $db->loadObject(); if (empty($data)) { - // [Interpretation 1660] If no data is found redirect to default page and show warning. + // [Interpretation 1740] If no data is found redirect to default page and show warning. JError::raiseWarning(500, JText::_('COM_SERMONDISTRIBUTOR_NOT_FOUND_OR_ACCESS_DENIED')); JFactory::getApplication()->redirect('index.php?option=com_sermondistributor&view=preachers'); return false; } if (SermondistributorHelper::checkString($data->local_files)) { - // [Interpretation 1274] Decode local_files + // [Interpretation 1354] Decode local_files $data->local_files = json_decode($data->local_files, true); } if (SermondistributorHelper::checkString($data->manual_files)) { - // [Interpretation 1274] Decode manual_files + // [Interpretation 1354] Decode manual_files $data->manual_files = json_decode($data->manual_files, true); } - // [Interpretation 1289] Make sure the content prepare plugins fire on description. + // [Interpretation 1369] Make sure the content prepare plugins fire on description. $data->description = JHtml::_('content.prepare',$data->description); - // [Interpretation 1291] Checking if description has uikit components that must be loaded. + // [Interpretation 1371] Checking if description has uikit components that must be loaded. $this->uikitComp = SermondistributorHelper::getUikitComp($data->description,$this->uikitComp); - // [Interpretation 1594] set the global sermon value. + // [Interpretation 1674] set the global sermon value. $this->a_sermon = $data->id; - // [Interpretation 1322] set idSermonStatisticD to the $data object. + // [Interpretation 1402] set idSermonStatisticD to the $data object. $data->idSermonStatisticD = $this->getIdSermonStatisticEbbd_D($data->id); - // [Interpretation 1754] set data object to item. + // [Interpretation 1834] set data object to item. $this->_item[$pk] = $data; } catch (Exception $e) @@ -265,24 +265,24 @@ class SermondistributorModelSermon extends JModelItem */ public function getIdSermonStatisticEbbd_D($id) { - // [Interpretation 2014] Get a db connection. + // [Interpretation 2094] Get a db connection. $db = JFactory::getDbo(); - // [Interpretation 2016] Create a new query object. + // [Interpretation 2096] Create a new query object. $query = $db->getQuery(true); - // [Interpretation 2018] Get from #__sermondistributor_statistic as d + // [Interpretation 2098] Get from #__sermondistributor_statistic as d $query->select($db->quoteName( array('d.filename','d.counter'), array('filename','counter'))); $query->from($db->quoteName('#__sermondistributor_statistic', 'd')); $query->where('d.sermon = ' . $db->quote($id)); - // [Interpretation 2072] Reset the query using our newly populated query object. + // [Interpretation 2152] Reset the query using our newly populated query object. $db->setQuery($query); $db->execute(); - // [Interpretation 2075] check if there was data returned + // [Interpretation 2155] check if there was data returned if ($db->getNumRows()) { return $db->loadObjectList(); diff --git a/site/router.php b/site/router.php index 15ee8415..02552895 100644 --- a/site/router.php +++ b/site/router.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage router.php diff --git a/site/sermondistributor.php b/site/sermondistributor.php index dbe37bc1..f6993b61 100644 --- a/site/sermondistributor.php +++ b/site/sermondistributor.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage sermondistributor.php @@ -32,7 +32,7 @@ $document->addStyleSheet('components/com_sermondistributor/assets/css/site.css') $document->addScript('components/com_sermondistributor/assets/js/site.js'); // Require helper files -JLoader::register('SermondistributorHelper', dirname(__FILE__) . '/helpers/sermondistributor.php'); +JLoader::register('SermondistributorHelper', dirname(__FILE__) . '/helpers/sermondistributor.php'); JLoader::register('SermondistributorHelperRoute', dirname(__FILE__) . '/helpers/route.php'); // Triger the Global Site Event diff --git a/site/views/categories/tmpl/default.php b/site/views/categories/tmpl/default.php index 300f5d97..c09ec16b 100644 --- a/site/views/categories/tmpl/default.php +++ b/site/views/categories/tmpl/default.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default.php diff --git a/site/views/categories/tmpl/default.xml b/site/views/categories/tmpl/default.xml index a6c65d32..22abfef3 100644 --- a/site/views/categories/tmpl/default.xml +++ b/site/views/categories/tmpl/default.xml @@ -5,7 +5,7 @@ - +
    @@ -16,7 +16,7 @@ description="COM_SERMONDISTRIBUTOR_CONFIG_CATEGORIES_DISPLAY_DESCRIPTION" class="btn-group btn-group-yesno" default=""> - +
    @@ -144,3 +146,6 @@ $this->item->params = $this->params; +item->playerKey): ?> + item); ?> + diff --git a/site/views/sermon/tmpl/default_sermonbox.php b/site/views/sermon/tmpl/default_sermonbox.php index 872cc5c6..4660d3de 100644 --- a/site/views/sermon/tmpl/default_sermonbox.php +++ b/site/views/sermon/tmpl/default_sermonbox.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_sermonbox.php @@ -125,7 +125,9 @@ $this->item->params = $this->params; params->get('add_to_dropbox') && isset($this->item->dropbox_buttons)): ?>
  • item); ?>
  • - item); ?> + item->playerKey): ?> + item); ?> + @@ -144,3 +146,6 @@ $this->item->params = $this->params; +item->playerKey): ?> + item); ?> + diff --git a/site/views/sermon/tmpl/default_sermonpanel.php b/site/views/sermon/tmpl/default_sermonpanel.php index d47f7080..3ebe7bb2 100644 --- a/site/views/sermon/tmpl/default_sermonpanel.php +++ b/site/views/sermon/tmpl/default_sermonpanel.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage default_sermonpanel.php @@ -114,7 +114,9 @@ $this->item->params = $this->params; params->get('add_to_dropbox') && isset($this->item->dropbox_buttons)): ?>
  • item); ?>
  • + item->playerKey): ?> item); ?> + @@ -130,3 +132,6 @@ $this->item->params = $this->params; +item->playerKey): ?> + item); ?> + diff --git a/site/views/sermon/view.html.php b/site/views/sermon/view.html.php index da9b1a5d..dbaeccb5 100644 --- a/site/views/sermon/view.html.php +++ b/site/views/sermon/view.html.php @@ -11,7 +11,7 @@ /-------------------------------------------------------------------------------------------------------------------------------/ @version 1.3.2 - @build 11th April, 2016 + @build 26th May, 2016 @created 22nd October, 2015 @package Sermon Distributor @subpackage view.html.php @@ -43,10 +43,10 @@ class SermondistributorViewSermon extends JViewLegacy $this->menu = $this->app->getMenu()->getActive(); // get the user object $this->user = JFactory::getUser(); - // [Interpretation 2354] Initialise variables. + // [Interpretation 2434] Initialise variables. $this->item = $this->get('Item'); - // [Interpretation 2389] Check for errors. + // [Interpretation 2469] Check for errors. if (count($errors = $this->get('Errors'))) { JError::raiseWarning(500, implode("\n", $errors)); @@ -60,10 +60,10 @@ class SermondistributorViewSermon extends JViewLegacy // set view key $this->item->viewKey = 'sermon'; - // [Interpretation 2406] Set the toolbar + // [Interpretation 2486] Set the toolbar $this->addToolBar(); - // [Interpretation 2408] set the document + // [Interpretation 2488] set the document $this->_prepareDocument(); parent::display($tpl); @@ -107,40 +107,40 @@ class SermondistributorViewSermon extends JViewLegacy protected function _prepareDocument() { - // [Interpretation 2843] always make sure jquery is loaded. + // [Interpretation 2923] always make sure jquery is loaded. JHtml::_('jquery.framework'); - // [Interpretation 2845] Load the header checker class. + // [Interpretation 2925] Load the header checker class. require_once( JPATH_COMPONENT_SITE.'/helpers/headercheck.php' ); - // [Interpretation 2847] Initialize the header checker. + // [Interpretation 2927] Initialize the header checker. $HeaderCheck = new HeaderCheck; - // [Interpretation 2852] Load uikit options. + // [Interpretation 2932] Load uikit options. $uikit = $this->params->get('uikit_load'); - // [Interpretation 2854] Set script size. + // [Interpretation 2934] Set script size. $size = $this->params->get('uikit_min'); - // [Interpretation 2856] Set css style. + // [Interpretation 2936] Set css style. $style = $this->params->get('uikit_style'); - // [Interpretation 2859] The uikit css. + // [Interpretation 2939] The uikit css. if ((!$HeaderCheck->css_loaded('uikit.min') || $uikit == 1) && $uikit != 2 && $uikit != 3) { $this->document->addStyleSheet(JURI::root(true) .'/media/com_sermondistributor/uikit/css/uikit'.$style.$size.'.css'); } - // [Interpretation 2864] The uikit js. + // [Interpretation 2944] The uikit js. if ((!$HeaderCheck->js_loaded('uikit.min') || $uikit == 1) && $uikit != 2 && $uikit != 3) { $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/uikit/js/uikit'.$size.'.js'); } - // [Interpretation 2873] Load the script to find all uikit components needed. + // [Interpretation 2953] Load the script to find all uikit components needed. if ($uikit != 2) { - // [Interpretation 2876] Set the default uikit components in this view. + // [Interpretation 2956] Set the default uikit components in this view. $uikitComp = array(); $uikitComp[] = 'data-uk-tooltip'; $uikitComp[] = 'data-uk-grid'; - // [Interpretation 2885] Get field uikit components needed in this view. + // [Interpretation 2965] Get field uikit components needed in this view. $uikitFieldComp = $this->get('UikitComp'); if (isset($uikitFieldComp) && SermondistributorHelper::checkArray($uikitFieldComp)) { @@ -156,32 +156,32 @@ class SermondistributorViewSermon extends JViewLegacy } } - // [Interpretation 2901] Load the needed uikit components in this view. + // [Interpretation 2981] Load the needed uikit components in this view. if ($uikit != 2 && isset($uikitComp) && SermondistributorHelper::checkArray($uikitComp)) { - // [Interpretation 2904] load just in case. + // [Interpretation 2984] load just in case. jimport('joomla.filesystem.file'); - // [Interpretation 2906] loading... + // [Interpretation 2986] loading... foreach ($uikitComp as $class) { foreach (SermondistributorHelper::$uk_components[$class] as $name) { - // [Interpretation 2911] check if the CSS file exists. + // [Interpretation 2991] check if the CSS file exists. if (JFile::exists(JPATH_ROOT.'/media/com_sermondistributor/uikit/css/components/'.$name.$style.$size.'.css')) { - // [Interpretation 2914] load the css. + // [Interpretation 2994] load the css. $this->document->addStyleSheet(JURI::root(true) .'/media/com_sermondistributor/uikit/css/components/'.$name.$style.$size.'.css'); } - // [Interpretation 2917] check if the JavaScript file exists. + // [Interpretation 2997] check if the JavaScript file exists. if (JFile::exists(JPATH_ROOT.'/media/com_sermondistributor/uikit/js/components/'.$name.$size.'.js')) { - // [Interpretation 2920] load the js. + // [Interpretation 3000] load the js. $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/uikit/js/components/'.$name.$size.'.js'); } } } } - // [Interpretation 2750] load the meta description + // [Interpretation 2830] load the meta description if (isset($this->item->metadesc) && $this->item->metadesc) { $this->document->setDescription($this->item->metadesc); @@ -190,7 +190,7 @@ class SermondistributorViewSermon extends JViewLegacy { $this->document->setDescription($this->params->get('menu-meta_description')); } - // [Interpretation 2759] load the key words if set + // [Interpretation 2839] load the key words if set if (isset($this->item->metakey) && $this->item->metakey) { $this->document->setMetadata('keywords', $this->item->metakey); @@ -199,7 +199,7 @@ class SermondistributorViewSermon extends JViewLegacy { $this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords')); } - // [Interpretation 2768] check the robot params + // [Interpretation 2848] check the robot params if (isset($this->item->robots) && $this->item->robots) { $this->document->setMetadata('robots', $this->item->robots); @@ -208,12 +208,12 @@ class SermondistributorViewSermon extends JViewLegacy { $this->document->setMetadata('robots', $this->params->get('robots')); } - // [Interpretation 2777] check if autor is to be set + // [Interpretation 2857] check if autor is to be set if (isset($this->item->created_by) && $this->params->get('MetaAuthor') == '1') { $this->document->setMetaData('author', $this->item->created_by); } - // [Interpretation 2782] check if metadata is available + // [Interpretation 2862] check if metadata is available if (isset($this->item->metadata) && $this->item->metadata) { $mdata = json_decode($this->item->metadata,true); @@ -225,15 +225,31 @@ class SermondistributorViewSermon extends JViewLegacy } } } - // default for sound mananger 2 - $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/script/soundmanager2-nodebug-jsmin.js'); - // 360-player - $this->document->addStyleSheet(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/360player.css'); - $this->document->addStyleSheet(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/360player-visualization.css'); - // 360-player - $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/script/berniecode-animator.js'); - $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/script/excanvas.js'); - $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/script/360player.js'); + // set the player key for the sermon view + $this->item->playerKey = (int) $this->params->get('player', 1); + if (1 == $this->item->playerKey) + { + // default for sound mananger 2 + $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/script/soundmanager2-nodebug-jsmin.js'); + // 360-player + $this->document->addStyleSheet(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/360player.css'); + $this->document->addStyleSheet(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/360player-visualization.css'); + // 360-player + $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/script/berniecode-animator.js'); + $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/script/excanvas.js'); + $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/soundmanager/demo/360-player/script/360player.js'); + } + elseif (2 == $this->item->playerKey) + { + // blue Monday + $this->document->addStyleSheet(JURI::root(true) .'/media/com_sermondistributor/jplayer/skin/blue.monday/css/jplayer.blue.monday.min.css'); + // default for jPlayer.js + $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/jplayer/jplayer/jquery.jplayer.min.js'); + if (count($this->item->download_links) > 1) + { + $this->document->addScript(JURI::root(true) .'/media/com_sermondistributor/jplayer/add-on/jplayer.playlist.min.js'); + } + } // add the document default css file $this->document->addStyleSheet(JURI::root(true) .'/components/com_sermondistributor/assets/css/sermon.css'); }