From 954fc0210d9151cb86ca4dad6a955f59ba135915 Mon Sep 17 00:00:00 2001 From: Calin Burloiu Date: Tue, 30 Aug 2011 16:38:29 +0300 Subject: [PATCH] bug fixes; views is incrementing; started to create help page -- imagemap widget created --- application/config/article.php | 8 +- application/config/pagination.php | 9 +- application/controllers/article.php | 4 +- application/controllers/video.php | 1 + application/core/Article_Controller.php | 17 ++++ application/language/english/ui_lang.php | 6 ++ application/models/videos_model.php | 15 +++ application/views/article/english/contact.php | 2 +- application/views/article/english/help.php | 92 +++++++++++++++++- application/views/video/watch_view.php | 13 ++- css/default.css | 1 + img/nsvideo-widget.jpg | Bin 0 -> 26276 bytes js/jquery.ui.imagemap.js | 81 +++++++++++++++ js/jquery.ui.nsvideo.js | 31 ++++-- 14 files changed, 261 insertions(+), 19 deletions(-) create mode 100644 img/nsvideo-widget.jpg create mode 100644 js/jquery.ui.imagemap.js diff --git a/application/config/article.php b/application/config/article.php index 8e6bc9f..1677048 100644 --- a/application/config/article.php +++ b/application/config/article.php @@ -6,5 +6,9 @@ */ // Examples -$config['article_$method_helpers'] = array(); -$config['article_$method_libraries'] = array(); \ No newline at end of file +// $config['article_$method_helpers'] = array(); +// $config['article_$method_libraries'] = array(); + + +// Help article +$config['article_help_js'] = array('jquery.ui.imagemap.js'); \ No newline at end of file diff --git a/application/config/pagination.php b/application/config/pagination.php index 8df4933..cd18203 100644 --- a/application/config/pagination.php +++ b/application/config/pagination.php @@ -1,7 +1,14 @@ '; -$config['full_tag_close'] = ''; \ No newline at end of file +$config['full_tag_close'] = ''; + +$config['first_link'] = $CI->lang->line('ui_page_first'); +$config['prev_link'] = $CI->lang->line('ui_page_previous'); +$config['next_link'] = $CI->lang->line('ui_page_next'); +$config['last_link'] = $CI->lang->line('ui_page_last'); \ No newline at end of file diff --git a/application/controllers/article.php b/application/controllers/article.php index 5073a5b..f1909b9 100644 --- a/application/controllers/article.php +++ b/application/controllers/article.php @@ -26,8 +26,8 @@ class Article extends Article_Controller { $html_params = array('title' => $this->title.' - ' . $this->config->item('site_name'), - //'css' => array(), - //'js' => array(), + 'css' => $this->css, + 'js' => $this->js, 'metas' => array('description'=>$this->metaDescription) ); diff --git a/application/controllers/video.php b/application/controllers/video.php index 019fa2c..45e66d3 100644 --- a/application/controllers/video.php +++ b/application/controllers/video.php @@ -38,6 +38,7 @@ class Video extends CI_Controller { // ** // Retrieve video information. $this->load->model('videos_model'); + $this->videos_model->inc_video_var($id, 'views'); $data['video'] = $this->videos_model->get_video($id, $name); $data['plugin_type'] = ($plugin === NULL ? 'auto' : $plugin); diff --git a/application/core/Article_Controller.php b/application/core/Article_Controller.php index e6a50aa..480b847 100644 --- a/application/core/Article_Controller.php +++ b/application/core/Article_Controller.php @@ -16,6 +16,11 @@ * an entry named "article_${method}_helpers" or "article_${method}_libraries" * respectively with an array of helpers or libraries to be loaded for the * article. + *
  • CSSs, JSs: in config file 'article.php': + * an entry named "article_${method}_css" or "article_${method}_js" + * respectively with an array of .css or .js to be loaded into members $css + * and $js. It's up to the programmer to define how this members are going + * to be used.
  • * * * @category Base Controller Library @@ -27,6 +32,8 @@ class Article_Controller extends CI_Controller { protected $metaDescription = NULL; protected $helpers = array(); protected $libraries = array(); + protected $css = array(); + protected $js = array(); function __construct() { @@ -65,6 +72,16 @@ class Article_Controller extends CI_Controller { $this->libraries = $this->config->item("article_${method}_library"); if ($this->libraries !== FALSE) $this->load->library($libraries); + + // CSSs + $css =& $this->config->item("article_${method}_css"); + if ($css !== FALSE) + $this->css = $css; + + // JavaScripts + $js =& $this->config->item("article_${method}_js"); + if ($js !== FALSE) + $this->js = $js; } /** diff --git a/application/language/english/ui_lang.php b/application/language/english/ui_lang.php index 0bd140d..70dffc0 100644 --- a/application/language/english/ui_lang.php +++ b/application/language/english/ui_lang.php @@ -24,6 +24,12 @@ $lang['ui_categ_tech_talks'] = 'TechTalks'; $lang['ui_categ_events'] = 'Events'; $lang['ui_categ_karaoke'] = 'Karaoke'; +// Pagination +$lang['ui_page_first'] = 'First'; +$lang['ui_page_previous'] = 'Previous'; +$lang['ui_page_next'] = 'Next'; +$lang['ui_page_last'] = 'Last'; + // Video asset metrics $lang['ui_view'] = 'view'; $lang['ui_views'] = 'views'; diff --git a/application/models/videos_model.php b/application/models/videos_model.php index ec7bb39..1ba9e8f 100644 --- a/application/models/videos_model.php +++ b/application/models/videos_model.php @@ -176,6 +176,21 @@ class Videos_model extends CI_Model { return $video; } + /** + * Increment a video parameter from DB: `views`, `likes` or `dislikes`. + * + * @param int $id DB video id + * @param string $param DB parameter column name. + * @return void + */ + public function inc_video_var($id, $var) + { + // TODO error report if query returns FALSE + $this->db->query('UPDATE `videos` ' + . 'SET `'. $var. '`=`'. $var. '`+1 ' + . 'WHERE id='. $id); + } + public function get_thumbs($name, $count) { $thumbs = array(); diff --git a/application/views/article/english/contact.php b/application/views/article/english/contact.php index 34b39a7..02e5d6f 100644 --- a/application/views/article/english/contact.php +++ b/application/views/article/english/contact.php @@ -6,7 +6,7 @@
    -
    email Redmine Issue Tracker:
    +
    redmine Redmine Issue Tracker:
    http://p2p-next.cs.pub.ro/redmine/site/issues
    diff --git a/application/views/article/english/help.php b/application/views/article/english/help.php index 30b2de3..99a6494 100644 --- a/application/views/article/english/help.php +++ b/application/views/article/english/help.php @@ -1 +1,91 @@ -TODO Help \ No newline at end of file +
    +
    + NextShare Video Widget Screenshot +
    + +
    +

    Watching Area

    +
    + Here you can watch the video. +
    + +

    Play / Pause button

    +
    + Toggle playing and pausing the video. +
    + +

    Current Time

    +
    + ... +
    + +

    Total Time

    +
    + ... +
    + +

    Time Progress Slider

    +
    + ... +
    + +

    Volume Slider

    +
    + ... +
    + +

    Mute button

    +
    + ... +
    + +

    Switch Video Definition (Resolution)

    +
    + ... +
    + +

    Switch Video Plugin

    +
    + ... +
    + +

    Full Screen button

    +
    + ... +
    +
    + +
    + + \ No newline at end of file diff --git a/application/views/video/watch_view.php b/application/views/video/watch_view.php index 36ae1e0..9f7d091 100644 --- a/application/views/video/watch_view.php +++ b/application/views/video/watch_view.php @@ -124,10 +124,15 @@ .nsvideo({ type: "", src: , - //width: videoWidth, - //height: videoHeight - minWidth: 640, - maxWidth: 1024, + + + width: 427, + height: 240, + showState: false, + + + //minWidth: 640, + //maxWidth: 1024, initialDuration: "", resize: function() { diff --git a/css/default.css b/css/default.css index e1abafa..fac6909 100644 --- a/css/default.css +++ b/css/default.css @@ -210,4 +210,5 @@ h1 .pagination { clear: both; + word-spacing: 0.5em; } diff --git a/img/nsvideo-widget.jpg b/img/nsvideo-widget.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75041766207a84a0f961b1cea02488cac84cfa90 GIT binary patch literal 26276 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 img', widget.element).css('width')) + .css('height', $('div.ui-imagemap-image > img', widget.element).css('height')) + ; + + widget.$marker = $('
    ') + .appendTo('div.ui-imagemap-image', widget.element); + widget.$marker + .css('position', 'absolute') + .css('outline', '2px solid red') + .css('background', 'transparent'); + + $('.ui-imagemap-title', widget.element) + .click(function() { + var $title = $(this); + + if (typeof $title.data('top') == 'undefined') + return false; + if (typeof $title.data('left') == 'undefined') + return false; + + var top = $title.data('top') + var left = $title.data('left'); + var width, height; + + if (typeof $title.data('width') == 'undefined') + width = '1px'; + else + width = $title.data('width'); + if (typeof $title.data('height') == 'undefined') + height = '1px'; + else + height = $title.data('height'); + + widget.$marker + .css('top', top) + .css('left', left) + .css('width', width) + .css('height', height); + + }); + }, + + _destroy: function() { + this.element.html(''); + }, + + _setOption: function( key, value ) { + // TODO + if ( key === "TODO" ) { + + } + + this._super( "_setOption", key, value ); + } +}); + +})( jQuery ); \ No newline at end of file diff --git a/js/jquery.ui.nsvideo.js b/js/jquery.ui.nsvideo.js index ccf9a13..ec30d87 100644 --- a/js/jquery.ui.nsvideo.js +++ b/js/jquery.ui.nsvideo.js @@ -200,13 +200,19 @@ $.widget( "ui.nsvideo", { widget.$videoContainer.html(''); // Install buttons or not supported message if required - var $installContainer = $('
    ') - .appendTo(widget.$videoContainer); - $installContainer - .nsinstall({ - type: widget.options.type, - hideIfAlreadyInstalled: true - }); + if (typeof $.fn.nsinstall == 'function') + { + widget.$installContainer = $('
    ') + .appendTo(widget.$videoContainer); + widget.$installContainer + .nsinstall({ + type: widget.options.type, + hideIfAlreadyInstalled: true + }); + if (widget.$installContainer.nsinstall('option', 'error') + == 'already installed') + widget.$installContainer.hide(); + } var width = widget.options.width; var height = widget.options.height; @@ -243,6 +249,10 @@ $.widget( "ui.nsvideo", { widget.html5.refreshVolume(); widget.html5.refreshState(); widget._setWidgetWidth(); + + if (widget.$video[0].error != 3 + && widget.$video[0].error != 4) + widget.$installContainer.hide(); }, seeked: function() { widget.html5.play(); @@ -375,7 +385,7 @@ $.widget( "ui.nsvideo", { if (widget.$video.width() < 640) { widget.element.css('width', - 640 + 8 + 'px'); + 427 + 8 + 'px');//TODO 640 + 8 widget.$video.css('left', Math.round(widget.$videoContainer.width()/2 - widget.$video.width()/2) @@ -826,6 +836,11 @@ $.widget( "ui.nsvideo", { }, play: function() { + if(typeof widget.$video[0].playlist.isPlaying == 'undefined') + return widget; + + widget.$installContainer.hide(); + if (! widget.$video[0].playlist.isPlaying) widget.$video[0].playlist.play(); -- 2.20.1