Improving usability + showing the "gotocourse" button instead of "subscription" for "open to world" and "open to platform" courses see #4508

skala
Julio Montoya 14 years ago
parent 4208a89dd0
commit ca5b52f747
  1. 2
      main/auth/courses_controller.php
  2. 122
      main/css/base.css
  3. 43
      main/inc/lib/auth.lib.php
  4. 82
      main/template/default/auth/courses_categories.php
  5. 58
      main/template/default/layout/hot_courses.tpl

@ -91,6 +91,7 @@ class CoursesController { // extends Controller {
}
$data['browse_courses_in_category'] = $this->model->browse_courses_in_category($category_code);
}
$data['browse_course_categories'] = $browse_course_categories;
$data['code'] = Security::remove_XSS($category_code);
@ -105,6 +106,7 @@ class CoursesController { // extends Controller {
$user_coursecodes[] = $value['code'];
}
}
$data['user_coursecodes'] = $user_coursecodes;
$data['action'] = $action;
$data['message'] = $message;

@ -1154,126 +1154,21 @@ button.next.disabled, .a_button.disabled {
border:1pt solid #ccc;
}
#categories-content-first {
width:290px;
float:left;
}
#categories-search {
text-align:center;
/*height:55px; */
float: left;
}
#categories-list {
-moz-border-radius-topleft:8px;
-moz-border-radius-topright:8px;
-webkit-border-top-left-radius: 8px;
-webkit-border-top-right-radius: 8px;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
-moz-box-shadow:0 -1px 10px 2px #CCCCCC;
-Webkit-box-shadow: 0 -1px 10px 2px #CCCCCC;
box-shadow: 0 -1px 10px 2px #CCCCCC;
border:1px solid #CCCCCC;
float:left;
margin:8px;
width:240px;
min-height:132px;
padding:18px;
font-size:11pt;
}
#categories-content-second {
margin-left: 308px;
margin-top:5px;
}
.course-block-main-item {
height: 45px;
padding: 5px 0px;
}
.categories-block-course {
-moz-border-radius-topleft:8px;
-moz-border-radius-topright:8px;
-webkit-border-top-left-radius: 8px;
-webkit-border-top-right-radius: 8px;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
-moz-box-shadow:0 -1px 10px 2px #CCCCCC;
-Webkit-box-shadow: 0 -1px 10px 2px #CCCCCC;
box-shadow: 0 -1px 10px 2px #CCCCCC;
border:1px solid #CCCCCC;
float:left;
margin:10px 0px 10px 0px;
padding:12px;
width:95%;
color: #bbb;
}
.categories-content-course {
float:left;
width:100%;
}
.categories-course-picture {
width:95px;
height:95px;
float:left;
overflow:hidden;
border-radius:4px;
-moz-border-radius:4px;
-webkit-border-radius:4px;
box-shadow:0 -1px 5px 2px #CCCCCC;
-moz-box-shadow:0 -1px 5px 2px #CCCCCC;
-Webkit-box-shadow: 0 -1px 5px 2px #CCCCCC;
box-shadow: 0 -1px 5px 2px #CCCCCC;
margin-left: 8px;
}
.categories-course-picture img {
height: 95px;
background-color: #eeeeee;
}
.categories-course-description {
margin-left:18px;
font-family:arial;
font-size:11px;
margin-bottom: 10px;
float:left;
}
.categories-course-links div {
padding-left:10px;
padding-bottom: 10px;
}
.categories-course-description .course-block-title {
font-family: arial;
font-size: medium;
margin-bottom: 10px;
color: #222222;
}
.categories-course-description .course-block-teacher {
font-size: large;
font-style: italic;
text-align: right;
color: #444444;
float: right;
text-align: right;
width: 197px;
}
.categories-course-description .course-block-date {
font-size: large;
font-style: italic;
text-align: right;
color: #444444;
line-height: 10px;
}
.course-block-popularity {
width: 90px;
float: right;
@ -1282,8 +1177,7 @@ button.next.disabled, .a_button.disabled {
text-align: right;
background-color: #eeeeee;
min-height:95px;
padding-right: 5px;
padding-right: 5px;
-moz-border-radius-topleft:4px;
-moz-border-radius-topright:4px;
-webkit-border-top-left-radius: 4px;
@ -1304,18 +1198,6 @@ button.next.disabled, .a_button.disabled {
text-shadow: gray 3px 3px 2px;
}
.categories-course-links {
float:left;
margin-top:15px;
height:26px;
padding:2px;
width:100%;
}
.course-link-desc {
float:left;
}
/* THEMATIC ADVANCE */
.thematic-postit {
width:250px;

@ -520,23 +520,23 @@ class Auth
*/
public function search_courses($search_term) {
$TABLECOURS = Database::get_main_table(TABLE_MAIN_COURSE);
$TABLE_COURSE_FIELD = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD);
$TABLE_COURSE_FIELD = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD);
$TABLE_COURSE_FIELD_VALUE = Database :: get_main_table(TABLE_MAIN_COURSE_FIELD_VALUES);
// get course list auto-register
$sql = "SELECT course_code FROM $TABLE_COURSE_FIELD_VALUE tcfv INNER JOIN $TABLE_COURSE_FIELD tcf ON " .
" tcfv.field_id = tcf.id WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 ";
$sql = "SELECT course_code FROM $TABLE_COURSE_FIELD_VALUE tcfv INNER JOIN $TABLE_COURSE_FIELD tcf ON tcfv.field_id = tcf.id
WHERE tcf.field_variable = 'special_course' AND tcfv.field_value = 1 ";
$special_course_result = Database::query($sql);
if(Database::num_rows($special_course_result)>0) {
$special_course_list = array();
while ($result_row = Database::fetch_array($special_course_result)) {
$special_course_list[] = '"'.$result_row['course_code'].'"';
}
if (Database::num_rows($special_course_result)>0) {
$special_course_list = array();
while ($result_row = Database::fetch_array($special_course_result)) {
$special_course_list[] = '"'.$result_row['course_code'].'"';
}
}
$without_special_courses = '';
if (!empty($special_course_list)) {
$without_special_courses = ' AND course.code NOT IN ('.implode(',',$special_course_list).')';
$without_special_courses = ' AND course.code NOT IN ('.implode(',',$special_course_list).')';
}
$search_term_safe = Database::escape_string($search_term);
@ -553,27 +553,26 @@ class Auth
}
}
$result_find = Database::query($sql_find);
$courses = array();
while ($row = Database::fetch_array($result_find)) {
$row['registration_code'] = !empty($row['registration_code']);
$count_users = count(CourseManager::get_user_list_from_course_code($row['code']));
$count_connections_last_month = Tracking::get_course_connections_count($row['code'], 0, api_get_utc_datetime(time()-(30*86400)));
$courses[] = array(
'code' => $row['code'],
'directory' => $row['directory'],
'db' => $row['db_name'],
'visual_code' => $row['visual_code'],
'title' => $row['title'],
'tutor' => $row['tutor_name'],
'subscribe' => $row['subscribe'],
'unsubscribe' => $row['unsubscribe'],
'code' => $row['code'],
'directory' => $row['directory'],
'db' => $row['db_name'],
'visual_code' => $row['visual_code'],
'title' => $row['title'],
'tutor' => $row['tutor_name'],
'subscribe' => $row['subscribe'],
'unsubscribe' => $row['unsubscribe'],
'registration_code' => $row['registration_code'],
'creation_date' => $row['creation_date'],
'count_users' => $count_users,
'creation_date' => $row['creation_date'],
'visibility' => $row['visibility'],
'count_users' => $count_users,
'count_connections' => $count_connections_last_month
);
// $courses[] = array('code' => $row['code'], 'directory' => $row['directory'], 'db' => $row['db_name'], 'visual_code' => $row['visual_code'], 'title' => $row['title'], 'tutor' => $row['tutor_name'], 'subscribe' => $row['subscribe'], 'unsubscribe' => $row['unsubscribe']);
}
return $courses;
}

@ -47,17 +47,17 @@ $stok = Security::get_token();
$hidden_links = 1;
}
?>
<div id="categories-content" >
<div id="categories-content-first">
<div id="categories-list">
<div class="row">
<div class="span3">
<div class="well">
<?php
if (!empty($browse_course_categories)) {
if ($action == 'display_random_courses') {
/*if ($action == 'display_random_courses') {
echo '<strong>'.get_lang('RandomPick').'</strong>';
$code = '';
} else {
echo '<a href="'.api_get_self().'?action=display_random_courses">'.get_lang('RandomPick').'</a>';
}
} else {
}*/
echo '<a class="btn" href="'.api_get_self().'?action=display_random_courses">'.get_lang('RandomPick').'</a><br /><br />';
// level 1
foreach ($browse_course_categories[0] as $category) {
@ -110,8 +110,7 @@ $stok = Security::get_token();
?>
</div>
</div>
<div id="categories-content-second">
<div class="span9">
<?php
if (!empty($message)) { Display::display_confirmation_message($message, false); }
if (!empty($error)) { Display::display_error_message($error, false); }
@ -124,7 +123,7 @@ $stok = Security::get_token();
if (!empty($browse_courses_in_category)) {
foreach ($browse_courses_in_category as $course) {
foreach ($browse_courses_in_category as $course) {
$title = cut($course['title'], 70);
$tutor_name = $course['tutor'];
@ -143,43 +142,50 @@ $stok = Security::get_token();
//<div class="course-block-main-item"><div class="left">'.get_lang('Teacher').'</div><div class="course-block-teacher right">'.$tutor_name.'</div></div>
//<div class="course-block-main-item"><div class="left">'.get_lang('CreationDate').'</div><div class="course-block-date">'.api_format_date($creation_date,DATE_FORMAT_SHORT).'</div></div>
echo '<div class="categories-block-course">
<div class="categories-content-course">';
echo '<div class="well_border"><div class="row">';
echo '<div class="categories-course-picture"><center>';
if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') {
echo '<a class="ajax" href="'.api_get_path(WEB_CODE_PATH).'inc/ajax/course_home.ajax.php?a=show_course_information&amp;code='.$course['code'].'" title="'.$icon_title.'" rel="gb_page_center[778]">';
echo '<img src="'.$course_medium_image.'" />';
echo '</a>';
} else {
echo '<img src="'.$course_medium_image.'" />';
}
echo '</center></div>';
echo '<div class="categories-course-description">
<div class="course-block-title">'.cut($title, 60).'</div>
'.$rating.'
</div>';
echo '<div class="course-block-popularity"><span>'.get_lang('ConnectionsLastMonth').'</span><div class="course-block-popularity-score">'.$count_connections.'</div></div>';
echo '</div>';
echo '<div class="categories-course-links">';
echo '<div class="span2">';
echo '<div class="thumbnail">';
if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') {
echo '<a class="ajax" href="'.api_get_path(WEB_CODE_PATH).'inc/ajax/course_home.ajax.php?a=show_course_information&amp;code='.$course['code'].'" title="'.$icon_title.'" rel="gb_page_center[778]">';
echo '<img src="'.$course_medium_image.'" />';
echo '</a>';
} else {
echo '<img src="'.$course_medium_image.'" />';
}
echo '</div>';//thumb
echo '</div>';
echo '<div class="span4">';
echo '<div class="categories-course-description"><h3>'.cut($title, 60).'</h3>'.$rating.'</div>';
echo '<p>';
// we display the icon to subscribe or the text already subscribed
if (!in_array($course['code'], $user_coursecodes)) {
if ($course['subscribe'] == SUBSCRIBE_ALLOWED) {
echo '<div class="course-link-desc right">
<a class="btn btn-primary" href="'. api_get_self().'?action=subscribe_course&amp;sec_token='.$stok.'&amp;subscribe_course='.$course['code'].'&amp;search_term='.$search_term.'&amp;category_code='.$code.'">'.get_lang('Subscribe').'</a></div>';
if ($course['visibility'] == COURSE_VISIBILITY_OPEN_WORLD || ($course['visibility'] == COURSE_VISIBILITY_OPEN_PLATFORM && !api_is_anonymous())) {
echo '<a class="btn btn-primary" href="'. api_get_course_url($course['code']).'">'.get_lang('GoToCourse').'</a>';
} else {
if ($course['subscribe'] == SUBSCRIBE_ALLOWED && !api_is_anonymous()) {
echo '<a class="btn btn-primary" href="'. api_get_self().'?action=subscribe_course&amp;sec_token='.$stok.'&amp;subscribe_course='.$course['code'].'&amp;search_term='.$search_term.'&amp;category_code='.$code.'">'.
get_lang('Subscribe').'</a>';
}
}
}
if (api_get_setting('show_courses_descriptions_in_catalog') == 'true') {
echo '<div class="course-link-desc right"><a class="ajax btn" href="'.api_get_path(WEB_CODE_PATH).'inc/ajax/course_home.ajax.php?a=show_course_information&amp;code='.$course['code'].'" title="'.$icon_title.'" class="thickbox">'.get_lang('Description').'</a></div>';
echo '&nbsp;<a class="ajax btn" href="'.api_get_path(WEB_CODE_PATH).'inc/ajax/course_home.ajax.php?a=show_course_information&amp;code='.$course['code'].'" title="'.$icon_title.'" class="thickbox">'.get_lang('Description').'</a>';
}
echo '</div>';
echo '</div>';
echo '</p>';
echo '</div>';
echo '<div class="span2">';
echo '<div class="course-block-popularity"><span>'.get_lang('ConnectionsLastMonth').'</span><div class="course-block-popularity-score">'.$count_connections.'</div></div>';
echo '</div>';
echo '</div></div>';
}
} else {
echo Display::display_warning_message(get_lang('ThereAreNoCoursesInThisCategory'));
}
?>
<div class="clear"></div>
?>
</div>
</div>
</div>

@ -30,41 +30,37 @@
</div>
{foreach $hot_courses as $hot_course}
<div class="span9">
<div class="categories-block-course ">
<div class="categories-content-course">
<div class="categories-course-picture">
<img src="{$hot_course.extra_info.course_image}" />
{* html_image file=$hot_course.extra_info.course_image *}
</div>
<div class="well_border">
<div class="row">
<div class="span2">
<div class="thumbnail">
<img src="{$hot_course.extra_info.course_image}" />
{* html_image file=$hot_course.extra_info.course_image *}
</div>
</div>
<div class="categories-course-description">
<div class="course-block-title">{$hot_course.extra_info.name|truncate:60}</div>
{$hot_course.extra_info.rating_html}
</div>
</div>
<div class="span6">
<div class="categories-course-description">
<h3>{$hot_course.extra_info.name|truncate:60}</h3>
{$hot_course.extra_info.rating_html}
</div>
<p>
{* World *}
{if ($hot_course.extra_info.visibility == 3 OR ($hot_course.extra_info.visibility == 2 AND $_u.logged == 1 ))}
<a class="btn btn-primary" title="" href="{$_p.web_course}{$hot_course.extra_info.path}/index.php">
{"GoToCourse"|get_lang}
</a>
{/if}
<div class="categories-course-links">
{* World *}
{if ($hot_course.extra_info.visibility == 3 OR ($hot_course.extra_info.visibility == 2 AND $_u.logged == 1 ))}
<div class="course-link-desc right">
<a class="btn btn-primary" title="" href="{$_p.web_course}{$hot_course.extra_info.path}/index.php">
{"GoToCourse"|get_lang}
</a>
{* Description *}
{if ($hot_course.extra_info.visibility == 3)}
<a class="ajax btn" title="" href="{$_p.web_ajax}course_home.ajax.php?a=show_course_information&code={$hot_course.course_code}">
{"Description"|get_lang}
</a>
{/if}
</p>
</div>
{/if}
{* Description *}
<div class="course-link-desc right">
{if ($hot_course.extra_info.visibility == 3)}
<a class="ajax btn" title="" href="{$_p.web_ajax}course_home.ajax.php?a=show_course_information&code={$hot_course.course_code}">
{"Description"|get_lang}
</a>
{/if}
</div>
</div>
</div>
</div>
{/foreach}

Loading…
Cancel
Save