diff --git a/htdocs/blocktype/myviews/lib.php b/htdocs/blocktype/myviews/lib.php index 2c2b343789244e6aacde6ca6dcc660f2bcc19e7e..d0c78135b93c259da435a7a8d44e6708627894d7 100644 --- a/htdocs/blocktype/myviews/lib.php +++ b/htdocs/blocktype/myviews/lib.php @@ -33,6 +33,40 @@ class PluginBlocktypeMyviews extends SystemBlocktype { return array('profile', 'dashboard'); } + /** + * This function renders a list of items views as html + * + * @param array items + * @param string template + * @param array options + * @param array pagination + */ + public function render_items(&$items, $template, $options, $pagination) { + $smarty = smarty_core(); + $smarty->assign('options', $options); + $smarty->assign('items', $items['data']); + + $items['tablerows'] = $smarty->fetch($template); + + if ($items['limit'] && $pagination) { + $pagination = build_pagination(array( + 'id' => $pagination['id'], + 'class' => 'center', + 'datatable' => $pagination['datatable'], + 'url' => $pagination['baseurl'], + 'jsonscript' => $pagination['jsonscript'], + 'count' => $items['count'], + 'limit' => $items['limit'], + 'offset' => $items['offset'], + 'numbersincludefirstlast' => false, + 'resultcounttextsingular' => $pagination['resultcounttextsingular'] ? $pagination['resultcounttextsingular'] : get_string('result'), + 'resultcounttextplural' => $pagination['resultcounttextplural'] ? $pagination['resultcounttextplural'] :get_string('results'), + )); + $items['pagination'] = $pagination['html']; + $items['pagination_js'] = $pagination['javascript']; + } + } + public static function render_instance(BlockInstance $instance, $editing=false) { $userid = $instance->get_view()->get('owner'); if (!$userid) { @@ -42,9 +76,21 @@ class PluginBlocktypeMyviews extends SystemBlocktype { $smarty = smarty_core(); // Get viewable views - $views = View::view_search(null, null, (object) array('owner' => $userid), null, null, 0, true, null, array('portfolio')); - $views = $views->count ? $views->data : array(); - $smarty->assign('VIEWS',$views); + $views = View::view_search(null, null, (object) array('owner' => $userid), null, 10, 0, true, null, array('portfolio')); + $views = (array)$views; + $viewid = $instance->get_view()->get('id'); + $baseurl = $instance->get_view()->get_url(); + $baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'view=' . $viewid . '&editing=' . $editing; + $pagination = array( + 'baseurl' => $baseurl, + 'id' => 'myviews_pagination', + 'datatable' => 'myviewlist', + 'jsonscript' => 'blocktype/myviews/myviews.json.php', + 'resultcounttextsingular' => get_string('view', 'view'), + 'resultcounttextplural' => get_string('views', 'view'), + ); + self::render_items($views, 'blocktype:myviews:myviewspaginator.tpl', array(), $pagination); + $smarty->assign('myviews', $views); return $smarty->fetch('blocktype:myviews:myviews.tpl'); } diff --git a/htdocs/blocktype/myviews/myviews.json.php b/htdocs/blocktype/myviews/myviews.json.php new file mode 100644 index 0000000000000000000000000000000000000000..c045d21f979f7a4ea0363ff090331014f9dda450 --- /dev/null +++ b/htdocs/blocktype/myviews/myviews.json.php @@ -0,0 +1,49 @@ + $dashboard->get('owner')), null, 10, $offset, true, null, array('portfolio')); +$views = (array)$views; +$baseurl = $dashboard->get_url(); +$baseurl .= (strpos($baseurl, '?') === false ? '?' : '&') . 'view=' . $viewid . '&editing=' . $editing; +$pagination = array( + 'baseurl' => $baseurl, + 'id' => 'myviews_pagination', + 'datatable' => 'myviewlist', + 'jsonscript' => 'blocktype/myviews/myviews.json.php', + 'resultcounttextsingular' => get_string('view', 'view'), + 'resultcounttextplural' => get_string('views', 'view'), +); +PluginBlocktypeMyViews::render_items($views, 'blocktype:myviews:myviewspaginator.tpl', array(), $pagination); + +json_reply(false, array('data' => $views)); diff --git a/htdocs/theme/raw/blocktype/myviews/templates/myviews.tpl b/htdocs/theme/raw/blocktype/myviews/templates/myviews.tpl index 3d4b10123389c7fdfd3ebad947c7682d406d7b2d..2e406d84ba48155caaa557918eebf7d4cafc7208 100644 --- a/htdocs/theme/raw/blocktype/myviews/templates/myviews.tpl +++ b/htdocs/theme/raw/blocktype/myviews/templates/myviews.tpl @@ -1,18 +1,20 @@ -{if $VIEWS} -