diff --git a/main/css/base.css b/main/css/base.css index 2ade197849..4ac6d09adc 100644 --- a/main/css/base.css +++ b/main/css/base.css @@ -2878,6 +2878,12 @@ form .formw .freeze { -o-box-shadow: 2px 2px 19px #aaa; -webkit-box-shadow: 2px 2px 19px #aaa; -moz-box-shadow: 2px 2px 19px #aaa; + + -webkit-border-radius: 6px; + -opera-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + background-color: white; border: 0.1em dotted #D4E06B; @@ -2889,7 +2895,7 @@ form .formw .freeze { padding-top: 0.9em; position: absolute; text-align: center; - width: 80px; + width: 120px; z-index: 40; } @@ -2934,9 +2940,7 @@ form .formw .freeze { border: 2px dotted orange; } - .edit_block { - font-size:14px; z-index: 200; } @@ -3260,10 +3264,7 @@ a:active{ display:none; } - - -#timeline { - +#my_timeline { background: url("dot.gif") repeat-x scroll left 45px; height: 350px; margin: 0px auto; @@ -3572,4 +3573,21 @@ a.forum_group_link { #hide_bar_template:hover { background-color:#aaa; +} + +.timeline-example { + background-color: #FFFFFF; + border: 1px solid #CCCCCC; + border-radius: 10px 10px 10px 10px; + box-shadow: 1px 2px 6px rgba(0, 0, 0, 0.25); + margin-bottom: 20px; + padding-bottom: 20px; + padding-top: 20px; +} + +#timeline { + clear: both; + height: 600px !important; + position: relative !important; + z-index: 100; } \ No newline at end of file diff --git a/main/inc/ajax/model.ajax.php b/main/inc/ajax/model.ajax.php index 3e8b7a3c50..96ef258eb8 100644 --- a/main/inc/ajax/model.ajax.php +++ b/main/inc/ajax/model.ajax.php @@ -21,7 +21,7 @@ if (!in_array($sord, array('asc','desc'))) { $sord = 'desc'; } -if (!in_array($action, array('get_exercise_results', 'get_work_user_list'))) { +if (!in_array($action, array('get_exercise_results', 'get_work_user_list', 'get_timelines'))) { api_protect_admin_script(true); } @@ -112,6 +112,11 @@ switch ($action) { require_once $libpath.'sessionmanager.lib.php'; $count = SessionManager::get_count_admin(); break; + case 'get_timelines': + require_once $libpath.'timeline.lib.php'; + $obj = new Timeline(); + $count = $obj->get_count(); + break; case 'get_gradebooks': require_once $libpath.'gradebook.lib.php'; $obj = new Gradebook(); @@ -162,6 +167,7 @@ $is_tutor = api_is_allowed_to_edit(true); //5. Querying the DB for the elements $columns = array(); + switch ($action) { case 'get_work_user_list': if (isset($_GET['type']) && $_GET['type'] == 'simple') { @@ -186,6 +192,29 @@ switch ($action) { case 'get_sessions': $columns = array('name', 'nbr_courses','category_name', 'date_start','date_end', 'coach_name', 'session_active', 'visibility'); $result = SessionManager::get_sessions_admin(array('where'=> $where_condition, 'order'=>"$sidx $sord", 'limit'=> "$start , $limit")); + break; + case 'get_timelines': + $columns = array('headline', 'actions'); + //$columns = array('headline', 'type', 'start_date', 'end_date', 'text', 'media', 'media_credit', 'media_caption', 'title_slide', 'parent_id'); + + if(!in_array($sidx, $columns)) { + $sidx = 'headline'; + } + $course_id = api_get_course_int_id(); + $result = Database::select('*', $obj->table, array('where' => array('parent_id = ? AND c_id = ?' => array('0', $course_id)), 'order'=>"$sidx $sord", 'LIMIT'=> "$start , $limit")); + $new_result = array(); + foreach ($result as $item) { + if (!$item['status']) { + $item['name'] = ''.$item['name'].''; + } + $item['headline'] = Display::url($item['headline'], api_get_path(WEB_CODE_PATH).'timeline/view.php?id='.$item['id']); + $item['actions'] = Display::url(Display::return_icon('add.png', get_lang('AddItems')), api_get_path(WEB_CODE_PATH).'timeline/?action=add_item&parent_id='.$item['id']); + $item['actions'] .= Display::url(Display::return_icon('edit.png', get_lang('Edit')), api_get_path(WEB_CODE_PATH).'timeline/?action=edit&id='.$item['id']); + $item['actions'] .= Display::url(Display::return_icon('delete.png', get_lang('Delete')), api_get_path(WEB_CODE_PATH).'timeline/?action=delete&id='.$item['id']); + + $new_result[] = $item; + } + $result = $new_result; break; case 'get_gradebooks': $columns = array('name', 'certificates','skills', 'actions', 'has_certificates'); @@ -253,8 +282,7 @@ switch ($action) { } $new_result[] = $item; } - $result = $new_result; - + $result = $new_result; break; case 'get_usergroups': $columns = array('name', 'users', 'courses','sessions','actions'); @@ -281,7 +309,8 @@ switch ($action) { } //var_dump($result); -$allowed_actions = array('get_careers', 'get_promotions', 'get_usergroups', 'get_gradebooks', 'get_sessions', 'get_exercise_results', 'get_work_user_list'); +$allowed_actions = array('get_careers', 'get_promotions', 'get_usergroups', 'get_gradebooks', + 'get_sessions', 'get_exercise_results', 'get_work_user_list', 'get_timelines'); //5. Creating an obj to return a json if (in_array($action, $allowed_actions)) { $response = new stdClass(); diff --git a/main/inc/ajax/timeline.ajax.php b/main/inc/ajax/timeline.ajax.php new file mode 100644 index 0000000000..2a0c269a9a --- /dev/null +++ b/main/inc/ajax/timeline.ajax.php @@ -0,0 +1,18 @@ +get_timeline_content($_GET['id']); + echo json_encode($items); + /*echo '
'; + echo json_encode($items); + echo ''; + var_dump($items);*/ + break; +} \ No newline at end of file diff --git a/main/inc/lib/database.constants.inc.php b/main/inc/lib/database.constants.inc.php index 2f224ed2c8..0742da25f4 100644 --- a/main/inc/lib/database.constants.inc.php +++ b/main/inc/lib/database.constants.inc.php @@ -329,3 +329,4 @@ define('TABLE_MAIN_SKILL_PROFILE', 'skill_profile'); define('TABLE_MAIN_SKILL_REL_PROFILE', 'skill_rel_profile'); define('TABLE_MAIN_CHAT', 'chat'); +define('TABLE_TIMELINE', 'timeline'); \ No newline at end of file diff --git a/main/inc/lib/database.lib.php b/main/inc/lib/database.lib.php index 65903ab4a2..8c46fd4929 100644 --- a/main/inc/lib/database.lib.php +++ b/main/inc/lib/database.lib.php @@ -1148,7 +1148,7 @@ class Database { * @example array('where'=> array('name = "Julio" AND lastname = "montoya")) */ - public static function select($columns, $table_name, $conditions = array(), $type_result = 'all', $option = 'ASSOC') { + public static function select($columns, $table_name, $conditions = array(), $type_result = 'all', $option = 'ASSOC') { $conditions = self::parse_conditions($conditions); //@todo we could do a describe here to check the columns ... @@ -1164,7 +1164,7 @@ class Database { } $sql = "SELECT $clean_columns FROM $table_name $conditions"; - //echo $sql.'
";d.content=e;d.raw=a;b.push(d);if(b.length==c){var g={tweetdata:b};VMM.fireEvent(global,"TWEETSLOADED",g)}})}},getTweetSearch:function(a,b){var c=40;b!=null&&b!=""&&(c=b);var d="http://search.twitter.com/search.json?q="+a+"&rpp="+c+"&include_entities=true&result_type=mixed",e=[];VMM.getJSON(d,function(a){for(var b=0;b",f=VMM.Util.linkify(a.text);f=f.replace(/(@([\w]+))/g,"$1");f=f.replace(/(#([\w]+))/g,"$1");e+=f;e+="
";e+="— "+a.user.name+" (@"+a.user.screen_name+") "+VMM.ExternalAPI.twitter.prettyParseTwitterDate(a.created_at)+"
";c.content=d;c.raw=a.results[b];e.push(c)}var g={tweetdata:e};VMM.fireEvent(global,"TWEETSLOADED",g)})},prettyHTML:function(a){var b="https://api.twitter.com/1/statuses/show.json?id="+a+"&include_entities=true&callback=?";VMM.getJSON(b,function(b){VMM.ExternalAPI.twitter.formatJSON(b,a)})},formatJSON:function(a,b){var c="",f=VMM.Util.linkify(a.results[b].text);f=f.replace(/(@([\w]+))/g,"$1");f=f.replace(/(#([\w]+))/g,"$1");d+=f;d+="
";d+="— "+a.results[b].from_user_name+" (@"+a.results[b].from_user+") "+VMM.ExternalAPI.twitter.prettyParseTwitterDate(a.results[b].created_at)+"
";c+=" "+""+" ";c+="";VMM.attachElement("#"+b,c)}},maps:{},flickr:{getPhoto:function(a,b){var c="http://api.flickr.com/services/rest/?method=flickr.photos.getSizes&api_key="+VMM.Keys.flickr+"&photo_id="+a+"&format=json&nojsoncallback=1";VMM.getJSON(c,function(a){var c=b+"_large",d=b+"_thumb",e=a.sizes.size[a.sizes.size.length-1].source,f=a.sizes.size[0].source;VMM.Element.attr(c,"src",e);VMM.Element.attr(d,"src",f)})}},soundcloud:{getSound:function(a,b){var c="http://soundcloud.com/oembed?iframe=true&url="+a+"";VMM.getJSON(c,function(a){VMM.attachElement("#"+b,a.html)})}},youtube:{init:function(a){if(VMM.master_config.youtube.active)VMM.master_config.youtube.createPlayer(a);else{VMM.master_config.youtube.que.push(a);if(!VMM.master_config.youtube.api_loaded){var b=document.createElement("script");b.src="http://www.youtube.com/player_api";var c=document.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c);VMM.master_config.youtube.api_loaded=!0}}},onAPIReady:function(){VMM.master_config.youtube.active=!0;for(var a=0;a",d=VMM.Util.linkify(a.text);d=d.replace(/(@([\w]+))/g,"$1");d=d.replace(/(#([\w]+))/g,"$1");c+=d;c+="