Sfoglia il codice sorgente

Merge with new features branch (mine)

Julio Montoya 11 anni fa
parent
commit
89b74a4af9
100 ha cambiato i file con 3949 aggiunte e 511 eliminazioni
  1. 6 1
      .gitignore
  2. 1 0
      config/profile.conf.dist.php
  3. 1 1
      main/admin/access_urls.php
  4. 2 2
      main/admin/class_list.php
  5. 2 2
      main/admin/course_category.php
  6. 7 9
      main/admin/course_edit.php
  7. 1 1
      main/admin/course_list.php
  8. 1 1
      main/admin/course_request_accepted.php
  9. 3 3
      main/admin/course_request_rejected.php
  10. 4 4
      main/admin/course_request_review.php
  11. 1 1
      main/admin/extra_field_options.php
  12. 33 33
      main/admin/grade_models.php
  13. 2 2
      main/admin/group_list.php
  14. 9 7
      main/admin/index.php
  15. 7 5
      main/admin/promotions.php
  16. 1 1
      main/admin/session_course_list.php
  17. 3 5
      main/admin/settings.lib.php
  18. 3 0
      main/admin/settings.php
  19. 1 1
      main/admin/system_announcements.php
  20. 1 1
      main/admin/user_fields.php
  21. 70 67
      main/admin/user_list.php
  22. 2 2
      main/admin/usergroups.php
  23. 236 146
      main/auth/profile.php
  24. 75 56
      main/course_home/vertical_activity.php
  25. 13 11
      main/coursecopy/classes/CourseArchiver.class.php
  26. 5 7
      main/coursecopy/classes/Resource.class.php
  27. 3 0
      main/coursecopy/import_backup.php
  28. 182 142
      main/css/base.css
  29. 538 0
      main/css/digedd/dataTable.css
  30. 191 0
      main/css/digedd/default.css
  31. 983 0
      main/css/digedd/frames.css
  32. BIN
      main/css/digedd/images/2leftarrow.gif
  33. BIN
      main/css/digedd/images/2rightarrow.gif
  34. BIN
      main/css/digedd/images/background_message.png
  35. BIN
      main/css/digedd/images/bar_1.gif
  36. BIN
      main/css/digedd/images/bar_1m.gif
  37. BIN
      main/css/digedd/images/bar_1r.gif
  38. BIN
      main/css/digedd/images/bar_1u.gif
  39. BIN
      main/css/digedd/images/bg-button.gif
  40. BIN
      main/css/digedd/images/bg-footer.gif
  41. BIN
      main/css/digedd/images/bg-header1.gif
  42. BIN
      main/css/digedd/images/bg-header4.png
  43. BIN
      main/css/digedd/images/bg-main.png
  44. BIN
      main/css/digedd/images/bg-menu.png
  45. BIN
      main/css/digedd/images/bgmenusup.png
  46. BIN
      main/css/digedd/images/bullet.gif
  47. BIN
      main/css/digedd/images/button_accept.gif
  48. BIN
      main/css/digedd/images/button_add.gif
  49. BIN
      main/css/digedd/images/button_back.gif
  50. BIN
      main/css/digedd/images/button_back.jpg
  51. BIN
      main/css/digedd/images/button_delete.gif
  52. BIN
      main/css/digedd/images/button_login.gif
  53. BIN
      main/css/digedd/images/button_minus.gif
  54. BIN
      main/css/digedd/images/button_next.gif
  55. BIN
      main/css/digedd/images/button_plus.gif
  56. BIN
      main/css/digedd/images/button_refresh.gif
  57. BIN
      main/css/digedd/images/button_search.gif
  58. BIN
      main/css/digedd/images/button_upload.gif
  59. BIN
      main/css/digedd/images/dataTable/Sorting icons.psd
  60. BIN
      main/css/digedd/images/dataTable/back_disabled.jpg
  61. BIN
      main/css/digedd/images/dataTable/back_enabled.jpg
  62. BIN
      main/css/digedd/images/dataTable/favicon.ico
  63. BIN
      main/css/digedd/images/dataTable/forward_disabled.jpg
  64. BIN
      main/css/digedd/images/dataTable/forward_enabled.jpg
  65. BIN
      main/css/digedd/images/dataTable/sort_asc.png
  66. BIN
      main/css/digedd/images/dataTable/sort_asc_disabled.png
  67. BIN
      main/css/digedd/images/dataTable/sort_both.png
  68. BIN
      main/css/digedd/images/dataTable/sort_desc.png
  69. BIN
      main/css/digedd/images/dataTable/sort_desc_disabled.png
  70. BIN
      main/css/digedd/images/fondoFooter.jpg
  71. BIN
      main/css/digedd/images/fondoHeader2.jpg
  72. BIN
      main/css/digedd/images/fondoHeader3.jpg
  73. BIN
      main/css/digedd/images/fondoNav.jpg
  74. BIN
      main/css/digedd/images/footer.jpg
  75. BIN
      main/css/digedd/images/header-logo.png
  76. 106 0
      main/css/digedd/images/header-logo.svg
  77. BIN
      main/css/digedd/images/help2.png
  78. BIN
      main/css/digedd/images/loading.gif
  79. BIN
      main/css/digedd/images/logoMouse.jpg
  80. BIN
      main/css/digedd/images/portal.png
  81. BIN
      main/css/digedd/images/refresh.png
  82. BIN
      main/css/digedd/images/salir.gif
  83. BIN
      main/css/digedd/images/shadow.gif
  84. BIN
      main/css/digedd/images/systemenouvelles.jpg
  85. BIN
      main/css/digedd/images/tab.png
  86. BIN
      main/css/digedd/images/tab_center-active.gif
  87. BIN
      main/css/digedd/images/tab_center.gif
  88. BIN
      main/css/digedd/images/tab_left-active.gif
  89. BIN
      main/css/digedd/images/tab_left-hover-active.gif
  90. BIN
      main/css/digedd/images/tab_left-hover.gif
  91. BIN
      main/css/digedd/images/tab_left.gif
  92. BIN
      main/css/digedd/images/tab_right-active.gif
  93. BIN
      main/css/digedd/images/tab_right-hover.gif
  94. BIN
      main/css/digedd/images/tab_right.gif
  95. BIN
      main/css/digedd/images/tab_right.jpg
  96. BIN
      main/css/digedd/images/tab_rigth.gif
  97. 218 0
      main/css/digedd/learnpath.css
  98. 943 0
      main/css/digedd/print.css
  99. 213 0
      main/css/digedd/scorm.css
  100. 82 0
      main/css/digedd/scormfs.css

+ 6 - 1
.gitignore

@@ -30,8 +30,13 @@ logs/*
 *.orig
 nbproject/*
 vendor/.git
-
 .*.swp
+vendor/*
+vendor/ezyang/htmlpurifier/docs/*
+vendor/ezyang/htmlpurifier/library/HTMLPurifier/ConfigSchema/Filter/ExtractStyleBlocks.txt
+vendor/ezyang/htmlpurifier/smoketests/*
+vendor/realityking/pchart/Sample/*
+vendor/realityking/pchart/Example*
 
 #Doctrine entities generation tests
 

+ 1 - 0
config/profile.conf.dist.php

@@ -11,6 +11,7 @@
 define('CHECK_PASS_EASY_TO_FIND', false);
 
 $profileIsEditable = true;
+$profileIsReadable = true;
 
 // User photos
 define('PREFIX_IMAGE_FILENAME_WITH_UID', true); // If true, filename of images on server begin with uid of the user.

+ 1 - 1
main/admin/access_urls.php

@@ -154,7 +154,7 @@ foreach($sortable_data as $row)  {
     $url_id = $row['id'];
     $actions = Display::url(Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL), "access_url_edit.php?url_id=$url_id");
     if ($url_id != '1') {
-        $actions .= '<a href="access_urls.php?action=delete_url&amp;url_id='.$url_id.'&amp;sec_token='.Security::getCurrentToken().'" onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
+        $actions .= '<a href="access_urls.php?action=delete_url&amp;url_id='.$url_id.'&amp;sec_token='.Security::getCurrentToken().'" onclick="javascript:if(!confirm('."'".addslashes(get_lang("ConfirmYourChoice"))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
     }
     $urls[] = array($url, $name, $type, $tech, $contact, $status, $actions);
 }

+ 2 - 2
main/admin/class_list.php

@@ -65,7 +65,7 @@ function modify_filter($class_id) {
     $result = '<a href="class_information.php?id='.$class_id.'">'.Display::return_icon('synthese_view.gif', get_lang('Info')).'</a>';
     $result .= ' <a href="class_edit.php?idclass='.$class_id.'">'.Display::return_icon('edit.png', get_lang('Edit')).'</a>';
     $result .= ' <a href="subscribe_user2class.php?idclass='.$class_id.'">'.Display::return_icon('add_multiple_users.gif', get_lang('AddUsersToAClass')).'</a>';
-    $result .= ' <a href="class_list.php?action=delete_class&amp;class_id='.$class_id.'" onclick="javascript: if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>';
+    $result .= ' <a href="class_list.php?action=delete_class&amp;class_id='.$class_id.'" onclick="javascript: if(!confirm('."'".addslashes(get_lang("ConfirmYourChoice"))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>';
     return $result;
 }
 
@@ -128,4 +128,4 @@ $tpl = $app['template'];
 $tpl->assign('content', $content);
 $tpl->assign('actions', $actions);
 $tpl->assign('message', $message);
-$tpl->display_one_col_template();
+$tpl->display_one_col_template();

+ 2 - 2
main/admin/course_category.php

@@ -216,7 +216,7 @@ if ($action == 'add' || $action == 'edit') {
                 <li>
                     <a href="<?php echo api_get_self(); ?>?category=<?php echo Security::remove_XSS($enreg['code']); ?>"><?php Display::display_icon('folder_document.gif', get_lang('OpenNode')); ?></a>
                     <a href="<?php echo api_get_self(); ?>?category=<?php echo Security::remove_XSS($category); ?>&amp;action=edit&amp;id=<?php echo Security::remove_XSS($enreg['code']); ?>"><?php Display::display_icon('edit.gif', get_lang('EditNode')); ?></a>
-                    <a href="<?php echo api_get_self(); ?>?category=<?php echo Security::remove_XSS($category); ?>&amp;action=delete&amp;id=<?php echo Security::remove_XSS($enreg['code']); ?>" onclick="javascript:if (!confirm('<?php echo addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES, $charset)); ?>'))
+                    <a href="<?php echo api_get_self(); ?>?category=<?php echo Security::remove_XSS($category); ?>&amp;action=delete&amp;id=<?php echo Security::remove_XSS($enreg['code']); ?>" onclick="javascript:if (!confirm('<?php echo addslashes(get_lang('ConfirmYourChoice')); ?>'))
                                 return false;"><?php Display::display_icon('delete.gif', get_lang('DeleteNode')); ?></a>
                     <a href="<?php echo api_get_self(); ?>?category=<?php echo Security::remove_XSS($category); ?>&amp;action=moveUp&amp;id=<?php echo Security::remove_XSS($enreg['code']); ?>&amp;tree_pos=<?php echo $enreg['tree_pos']; ?>"><?php Display::display_icon('up.gif', get_lang('UpInSameLevel')); ?></a>
                 <?php echo $enreg['name']; ?>
@@ -359,4 +359,4 @@ function compterFils($pere, $cpt) {
     }
 
     return ($cpt + 1);
-}
+}

+ 7 - 9
main/admin/course_edit.php

@@ -12,7 +12,6 @@ $this_section = SECTION_PLATFORM_ADMIN;
 
 api_protect_admin_script();
 
-
 $course_table       = Database::get_main_table(TABLE_MAIN_COURSE);
 $course_code = isset($_GET['course_code']) ? $_GET['course_code'] : $_POST['code'];
 
@@ -47,19 +46,17 @@ if (api_is_multiple_url_enabled()) {
 	$access_url_rel_user_table= Database :: get_main_table(TABLE_MAIN_ACCESS_URL_REL_USER);
 	$sql = "SELECT u.user_id,lastname,firstname FROM $table_user as u
 			INNER JOIN $access_url_rel_user_table url_rel_user
-			ON (u.user_id=url_rel_user.user_id) WHERE url_rel_user.access_url_id=".api_get_current_access_url_id()." AND status=1".$order_clause;
+			ON (u.user_id=url_rel_user.user_id) WHERE url_rel_user.access_url_id=".api_get_current_access_url_id()." AND status = 1 or status = 2 ".$order_clause;
 } else {
-	
-	$sql = "SELECT user_id,lastname,firstname FROM $table_user WHERE status='1'".$order_clause;
+	$sql = "SELECT user_id,lastname,firstname FROM $table_user WHERE status = 1 or status = 2 ".$order_clause;
 }
 
 $res = Database::query($sql);
 $teachers = array();
 
-
 $platform_teachers[0] = '-- '.get_lang('NoManager').' --';
 while ($obj = Database::fetch_object($res)) {
-    
+
 	if (!array_key_exists($obj->user_id,$course_teachers)) {
 		$teachers[$obj->user_id] = api_get_person_name($obj->firstname, $obj->lastname);
 	}
@@ -179,6 +176,7 @@ $(function() {
     '.$extra['jquery_ready_content'].'
 });
 </script>';
+
 $form->addElement('style_submit_button', 'button', get_lang('ModifyCourseInfo'),'onclick="valide()"; class="save"');
 
 // Set some default values
@@ -218,12 +216,12 @@ if ($form->validate()) {
 	} else {
         header('Location: course_list.php');
         exit;
-    }
+	}
 }
+
 Display::display_header($tool_name);
 
 echo "<script>
-
 function valide() {
 	var options = document.getElementById('course_teachers').options;
 	for (i = 0 ; i<options.length ; i++) {
@@ -236,4 +234,4 @@ function valide() {
 // Display the form
 $form->display();
 /* FOOTER */
-Display :: display_footer();
+Display :: display_footer();

+ 1 - 1
main/admin/course_list.php

@@ -136,7 +136,7 @@ function modify_filter($code) {
         '<a href="../tracking/courseLog.php?cidReq='.$code.'">'.Display::return_icon('statistics.gif', get_lang('Tracking')).'</a>&nbsp;'.
         '<a href="course_edit.php?course_code='.$code.'">'.Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>&nbsp;'.
         '<a href="../coursecopy/backup.php?cidReq='.$code.'">'.Display::return_icon('backup.gif', get_lang('CreateBackup')).'</a>&nbsp;'.
-        '<a href="course_list.php?delete_course='.$code.'"  onclick="javascript: if (!confirm('."'".addslashes(api_htmlentities(get_lang('ConfirmYourChoice'), ENT_QUOTES))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
+        '<a href="course_list.php?delete_course='.$code.'"  onclick="javascript: if (!confirm('."'".addslashes(get_lang('ConfirmYourChoice'))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
 }
 
 /**

+ 1 - 1
main/admin/course_request_accepted.php

@@ -124,7 +124,7 @@ function get_request_data($from, $number_of_items, $column, $direction) {
 function modify_filter($id) {
     $code = CourseRequestManager::get_course_request_code($id);
     $result = '<a href="course_request_edit.php?id='.$id.'&caller=1">'.Display::return_icon('edit.gif', get_lang('Edit'), array('style' => 'vertical-align: middle;')).'</a>'.
-        '&nbsp;<a href="?delete_course_request='.$id.'">'.Display::return_icon('delete.gif', get_lang('DeleteThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('ACourseRequestWillBeDeleted'), $code), ENT_QUOTES)).'\')) return false;')).'</a>';
+        '&nbsp;<a href="?delete_course_request='.$id.'">'.Display::return_icon('delete.gif', get_lang('DeleteThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('ACourseRequestWillBeDeleted'), $code)).'\')) return false;')).'</a>';
     return $result;
 }
 

+ 3 - 3
main/admin/course_request_rejected.php

@@ -156,11 +156,11 @@ function get_request_data($from, $number_of_items, $column, $direction) {
 function modify_filter($id) {
     $code = CourseRequestManager::get_course_request_code($id);
     $result = '<a href="course_request_edit.php?id='.$id.'&caller=2">'.Display::return_icon('edit.gif', get_lang('Edit'), array('style' => 'vertical-align: middle;')).'</a>'.
-        '&nbsp;<a href="?accept_course_request='.$id.'">'.Display::return_icon('action_accept.gif', get_lang('AcceptThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('ANewCourseWillBeCreated'), $code), ENT_QUOTES)).'\')) return false;')).'</a>';
+        '&nbsp;<a href="?accept_course_request='.$id.'">'.Display::return_icon('action_accept.gif', get_lang('AcceptThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('ANewCourseWillBeCreated'), $code)).'\')) return false;')).'</a>';
     if (!CourseRequestManager::additional_info_asked($id)) {
-        $result .= '&nbsp;<a href="?request_info='.$id.'">'.Display::return_icon('request_info.gif', get_lang('AskAdditionalInfo'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('AdditionalInfoWillBeAsked'), $code), ENT_QUOTES)).'\')) return false;')).'</a>';
+        $result .= '&nbsp;<a href="?request_info='.$id.'">'.Display::return_icon('request_info.gif', get_lang('AskAdditionalInfo'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('AdditionalInfoWillBeAsked'), $code)).'\')) return false;')).'</a>';
     }
-    $result .= '&nbsp;<a href="?delete_course_request='.$id.'">'.Display::return_icon('delete.gif', get_lang('DeleteThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('ACourseRequestWillBeDeleted'), $code), ENT_QUOTES)).'\')) return false;')).'</a>';
+    $result .= '&nbsp;<a href="?delete_course_request='.$id.'">'.Display::return_icon('delete.gif', get_lang('DeleteThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('ACourseRequestWillBeDeleted'), $code)).'\')) return false;')).'</a>';
 
     return $result;
 }

+ 4 - 4
main/admin/course_request_review.php

@@ -201,13 +201,13 @@ function email_filter($teacher) {
 function modify_filter($id) {
     $code = CourseRequestManager::get_course_request_code($id);
     $result = '<a href="course_request_edit.php?id='.$id.'&caller=0">'.Display::return_icon('edit.gif', get_lang('Edit'), array('style' => 'vertical-align: middle;')).'</a>'.
-        '&nbsp;<a href="?accept_course_request='.$id.'">'.Display::return_icon('accept.png', get_lang('AcceptThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('ANewCourseWillBeCreated'), $code), ENT_QUOTES)).'\')) return false;'),16).'</a>'.
-        '&nbsp;<a href="?reject_course_request='.$id.'">'.Display::return_icon('error.png', get_lang('RejectThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('ACourseRequestWillBeRejected'), $code), ENT_QUOTES)).'\')) return false;'),16).'</a>';
+        '&nbsp;<a href="?accept_course_request='.$id.'">'.Display::return_icon('accept.png', get_lang('AcceptThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('ANewCourseWillBeCreated'), $code)).'\')) return false;'),16).'</a>'.
+        '&nbsp;<a href="?reject_course_request='.$id.'">'.Display::return_icon('error.png', get_lang('RejectThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('ACourseRequestWillBeRejected'), $code)).'\')) return false;'),16).'</a>';
     if (!CourseRequestManager::additional_info_asked($id)) {
-        $result .= '&nbsp;<a href="?request_info='.$id.'">'.Display::return_icon('request_info.gif', get_lang('AskAdditionalInfo'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('AdditionalInfoWillBeAsked'), $code), ENT_QUOTES)).'\')) return false;')).'</a>';
+        $result .= '&nbsp;<a href="?request_info='.$id.'">'.Display::return_icon('request_info.gif', get_lang('AskAdditionalInfo'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('AdditionalInfoWillBeAsked'), $code)).'\')) return false;')).'</a>';
     }
     if (DELETE_ACTION_ENABLED) {
-        $result .= '&nbsp;<a href="?delete_course_request='.$id.'">'.Display::return_icon('delete.gif', get_lang('DeleteThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(api_htmlentities(sprintf(get_lang('ACourseRequestWillBeDeleted'), $code), ENT_QUOTES)).'\')) return false;')).'</a>';
+        $result .= '&nbsp;<a href="?delete_course_request='.$id.'">'.Display::return_icon('delete.gif', get_lang('DeleteThisCourseRequest'), array('style' => 'vertical-align: middle;', 'onclick' => 'javascript: if (!confirm(\''.addslashes(sprintf(get_lang('ACourseRequestWillBeDeleted'), $code)).'\')) return false;')).'</a>';
     }
     return $result;
 }

+ 1 - 1
main/admin/extra_field_options.php

@@ -80,7 +80,7 @@ $extra_params['height'] = 'auto';
 //With this function we can add actions to the jgrid (edit, delete, etc)
 $action_links = 'function action_formatter(cellvalue, options, rowObject) {
          return \'<a href="?action=edit&'.$params.'&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
-         '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;"  href="?sec_token='.$token.'&action=delete&'.$params.'&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
+         '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;"  href="?sec_token='.$token.'&action=delete&'.$params.'&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
          '\';
  }';
 $htmlHeadXtra[]='

+ 33 - 33
main/admin/grade_models.php

@@ -28,9 +28,9 @@ $interbreadcrumb[]=array('url' => 'index.php','name' => get_lang('PlatformAdmin'
 $action = isset($_GET['action']) ? $_GET['action'] : null;
 
 $check = Security::check_token('request');
-$token = Security::get_token();    
+$token = Security::get_token();
 
-if ($action == 'add') {    
+if ($action == 'add') {
     $interbreadcrumb[]=array('url' => 'grade_models.php','name' => get_lang('GradeModel'));
     $interbreadcrumb[]=array('url' => '#','name' => get_lang('Add'));
 } elseif ($action == 'edit') {
@@ -41,7 +41,7 @@ if ($action == 'add') {
 }
 
 $htmlHeadXtra[]= '<script>
-    
+
 function plusItem(item) {
         if (item != 1) {
 		document.getElementById(item).style.display = "inline";
@@ -53,7 +53,7 @@ function plusItem(item) {
 	 	//document.getElementById("txta-"+(item-1)).value = "";
         }
   }
-  
+
 function minItem(item) {
     if (item != 1) {
      document.getElementById(item).style.display = "none";
@@ -75,7 +75,7 @@ Display::display_header($tool_name);
 //jqgrid will use this URL to do the selects
 $url            = api_get_path(WEB_AJAX_PATH).'model.ajax.php?a=get_grade_models';
 
-//The order is important you need to check the the $column variable in the model.ajax.php file 
+//The order is important you need to check the the $column variable in the model.ajax.php file
 $columns        = array(get_lang('Name'), get_lang('Description'), get_lang('Actions'));
 
 //Column config
@@ -83,25 +83,25 @@ $column_model   = array(
                         array('name'=>'name',           'index'=>'name',        'width'=>'80',   'align'=>'left'),
                         array('name'=>'description',    'index'=>'description', 'width'=>'500',  'align'=>'left','sortable'=>'false'),
                         array('name'=>'actions',        'index'=>'actions',     'width'=>'100',  'align'=>'left','formatter'=>'action_formatter','sortable'=>'false')
-                       );            
-//Autowidth             
+                       );
+//Autowidth
 $extra_params['autowidth'] = 'true';
-//height auto 
-$extra_params['height'] = 'auto'; 
+//height auto
+$extra_params['height'] = 'auto';
 
 //With this function we can add actions to the jgrid (edit, delete, etc)
 $action_links = 'function action_formatter(cellvalue, options, rowObject) {
-                         return \'<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.                         
-                         '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;"  href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
-                         '\'; 
+                         return \'<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
+                         '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;"  href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a>'.
+                         '\';
                  }';
 ?>
 <script>
 $(function() {
-<?php 
+<?php
     // grid definition see the $obj->display() function
-    echo Display::grid_js('grade_model',  $url, $columns, $column_model, $extra_params, array(), $action_links,true);       
-?> 
+    echo Display::grid_js('grade_model',  $url, $columns, $column_model, $extra_params, array(), $action_links,true);
+?>
 });
 </script>
 <?php
@@ -112,44 +112,44 @@ switch ($action) {
     case 'add':
         if (api_get_session_id() != 0 && !api_is_allowed_to_session_edit(false, true)) {
             api_not_allowed();
-        }        
+        }
 
         $url  = api_get_self().'?action='.Security::remove_XSS($_GET['action']);
         $form = $obj->return_form($url, 'add');
-        
-        
-        
+
+
+
         // The validation or display
-        if ($form->validate()) {            
-            if ($check) {     
+        if ($form->validate()) {
+            if ($check) {
                 $values = $form->exportValues();
-                $res    = $obj->save($values);            
+                $res    = $obj->save($values);
                 if ($res) {
                     Display::display_confirmation_message(get_lang('ItemAdded'));
                 }
-            }        
+            }
             $obj->display();
         } else {
             echo '<div class="actions">';
             echo '<a href="'.api_get_self().'">'.Display::return_icon('back.png',get_lang('Back'),'',ICON_SIZE_MEDIUM).'</a>';
-            echo '</div>';            
+            echo '</div>';
             $form->addElement('hidden', 'sec_token');
             $form->setConstants(array('sec_token' => $token));
             $form->display();
         }
         break;
     case 'edit':
-        // Action handling: Editing 
+        // Action handling: Editing
         $url  = api_get_self().'?action='.Security::remove_XSS($_GET['action']).'&id='.intval($_GET['id']);
-        $form = $obj->return_form($url, 'edit');    
+        $form = $obj->return_form($url, 'edit');
 
         // The validation or display
-        if ($form->validate()) {            
+        if ($form->validate()) {
             if ($check) {
-                $values = $form->exportValues();                
+                $values = $form->exportValues();
                 $res    = $obj->update($values);
-                Display::display_confirmation_message(get_lang('ItemUpdated'), false);                
-            }            
+                Display::display_confirmation_message(get_lang('ItemUpdated'), false);
+            }
             $obj->display();
         } else {
             echo '<div class="actions">';
@@ -169,9 +169,9 @@ switch ($action) {
             }
         }
         $obj->display();
-        break;   
+        break;
     default:
-        $obj->display();   
+        $obj->display();
         break;
 }
-Display :: display_footer();
+Display :: display_footer();

+ 2 - 2
main/admin/group_list.php

@@ -174,7 +174,7 @@ function modify_filter($group_id, $url_params, $row) {
     if (api_is_platform_admin()) {
         $result .= '<a href="'.api_get_path(WEB_CODE_PATH).'admin/add_users_to_group.php?id='.$group_id.'">'.Display::return_icon('subscribe_users_social_network.png', get_lang('AddUsersToGroup'), '', ICON_SIZE_SMALL).'</a>';
         $result .= '<a href="group_edit.php?id='.$group_id.'">'.Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>&nbsp;&nbsp;';
-        $result .= '<a href="group_list.php?action=delete_group&amp;group_id='.$group_id.'&amp;'.$url_params.'&amp;sec_token='.Security::getCurrentToken().'"  onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES, $charset))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
+        $result .= '<a href="group_list.php?action=delete_group&amp;group_id='.$group_id.'&amp;'.$url_params.'&amp;sec_token='.Security::getCurrentToken().'"  onclick="javascript:if(!confirm('."'".addslashes(get_lang("ConfirmYourChoice"))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
     }
     return $result;
 }
@@ -395,4 +395,4 @@ if (isset($_GET['search']) && $_GET['search'] == 'advanced') {
         $table->set_form_actions(array('delete' => get_lang('DeleteFromPlatform')));
     $table->display();
 }
-Display :: display_footer();
+Display :: display_footer();

+ 9 - 7
main/admin/index.php

@@ -7,6 +7,7 @@
 /**
  * Code
  */
+
 // Language files that need to be included.
 $language_file = array('admin', 'tracking','coursebackup');
 
@@ -116,10 +117,12 @@ if (api_is_platform_admin()) {
 	$items[] = array('url'=>'course_category.php', 			'label' => get_lang('AdminCategories'));
 	$items[] = array('url'=>'subscribe_user2course.php', 	'label' => get_lang('AddUsersToACourse'));
 	$items[] = array('url'=>'course_user_import.php', 		'label' => get_lang('ImportUsersToACourse'));
+
     $items[] = array('url'=>'extra_fields.php?type=course', 	'label' => get_lang('ManageCourseFields'));
 
     $items[] = array('url'=>'extra_fields.php?type=question', 	'label' => get_lang('ManageQuestionFields'));
 
+
     if (api_get_setting('gradebook_enable_grade_model') == 'true') {
         $items[] = array('url'=>'grade_models.php',             'label' => get_lang('GradeModel'));
     }
@@ -147,7 +150,7 @@ if (api_is_platform_admin()) {
     $items[] = array('url'=>'settings.php?category=Plugins','label' => get_lang('Plugins'));
     $items[] = array('url'=>'settings.php?category=Regions','label' => get_lang('Regions'));
     $items[] = array('url'=>'system_announcements.php', 	'label' => get_lang('SystemAnnouncements'));
-    $items[] = array('url'=> api_get_path(WEB_CODE_PATH).'calendar/agenda_js.php?type=admin', 'label' => get_lang('GlobalAgenda'));
+    $items[] = array('url'=>api_get_path(WEB_CODE_PATH).'calendar/agenda_js.php?type=admin', 'label' => get_lang('GlobalAgenda'));
     $items[] = array('url'=>'configure_homepage.php', 		'label' => get_lang('ConfigureHomePage'));
     $items[] = array('url'=>'configure_inscription.php', 	'label' => get_lang('ConfigureInscription'));
     $items[] = array('url'=>'statistics/index.php', 		'label' => get_lang('Statistics'));
@@ -160,9 +163,9 @@ if (api_is_platform_admin()) {
     }
 
     if (api_get_multiple_access_url()) {
-		if (api_is_global_platform_admin()) {
+	    if (api_is_global_platform_admin()) {
             	$items[] = array('url'=>'access_urls.php', 	'label' => get_lang('ConfigureMultipleAccessURLs'));
-            }
+        }
     }
 
     if (api_get_setting('allow_reservation') == 'true') {
@@ -187,7 +190,7 @@ $blocks['sessions']['search_form'] = $search_form;
 $items = array();
 $items[] = array('url'=> api_get_path(WEB_CODE_PATH).'session/session_list.php', 'label' => get_lang('ListSession'));
 $items[] = array('url'=> api_get_path(WEB_CODE_PATH).'session/session_add.php', 	'label' => get_lang('AddSession'));
-$items[] = array('url'=>'session_category_list.php', 	'label' => get_lang('ListSessionCategory'));
+$items[] = array('url'=> 'session_category_list.php', 	'label' => get_lang('ListSessionCategory'));
 $items[] = array('url'=> api_get_path(WEB_CODE_PATH).'session/session_import.php', 	'label' => get_lang('ImportSessionListXMLCSV'));
 if (isset($extAuthSource) && isset($extAuthSource['ldap']) && count($extAuthSource['ldap']) > 0) {
     $items[] = array('url'=>'ldap_import_students_to_session.php', 	'label' => get_lang('ImportLDAPUsersIntoSession'));
@@ -224,8 +227,8 @@ if (api_is_platform_admin()) {
 	if (is_dir(api_get_path(SYS_TEST_PATH).'datafiller/')) {
 		$items[] = array('url'=>'filler.php', 	'label' => get_lang('DataFiller'));
 	}
-	$items[] = array('url'=>'archive_cleanup.php', 	'label' => get_lang('ArchiveDirCleanup'));
-    $items[] = array('url'=>'system_management.php', 'label' => get_lang('SystemManagement'));
+    $items[] = array('url'=>'archive_cleanup.php', 	'label' => get_lang('ArchiveDirCleanup'));
+	$items[] = array('url'=>'system_management.php', 'label' => get_lang('SystemManagement'));
 
 	$blocks['settings']['items'] = $items;
     $blocks['settings']['extra'] = null;
@@ -304,7 +307,6 @@ $app['template']->assign('web_admin_ajax_url', $admin_ajax_url);
 $app['template']->assign('blocks', $blocks);
 $app['template']->display('default/admin/settings_index.tpl');
 
-
 /**
  * Displays either the text for the registration or the message that the installation is (not) up to date
  *

+ 7 - 5
main/admin/promotions.php

@@ -67,8 +67,8 @@ $extra_params['height'] = 'auto'; //use the width of the parent
 $action_links = 'function action_formatter (cellvalue, options, rowObject) {
                     return \'<a href="add_sessions_to_promotion.php?id=\'+options.rowId+\'">'.Display::return_icon('session_to_promotion.png',get_lang('SubscribeSessionsToPromotions'),'',ICON_SIZE_SMALL).'</a>'.
                     '&nbsp;<a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png',get_lang('Edit'),'',ICON_SIZE_SMALL).'</a>'.
-					'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;"  href="?sec_token='.$token.'&action=copy&id=\'+options.rowId+\'">'.Display::return_icon('copy.png',get_lang('Copy'),'',ICON_SIZE_SMALL).'</a>'.
-                    '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;"  href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a> \'; 
+					'&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;"  href="?sec_token='.$token.'&action=copy&id=\'+options.rowId+\'">'.Display::return_icon('copy.png',get_lang('Copy'),'',ICON_SIZE_SMALL).'</a>'.
+                    '&nbsp;<a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;"  href="?sec_token='.$token.'&action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png',get_lang('Delete'),'',ICON_SIZE_SMALL).'</a> \';
                  }';
 
 ?>
@@ -130,9 +130,11 @@ switch ($action) {
             if ($check) {
                 $values = $form->exportValues();                    
                 $res    = $promotion->update($values);
-                $promotion->update_all_sessions_status_by_promotion_id($values['id'], $values['status']);  
-                if ($res) {
-                    Display::display_confirmation_message(get_lang('PromotionUpdated'), $values['name']);
+                $promotion->update_all_sessions_status_by_promotion_id($values['id'], $values['status']);    
+                if ($values['status']) {
+                    Display::display_confirmation_message(sprintf(get_lang('PromotionXUnarchived'), $values['name']), false);
+                } else {
+                    Display::display_confirmation_message(sprintf(get_lang('PromotionXArchived'), $values['name']), false);
                 }
             }            
             $promotion->display();

+ 1 - 1
main/admin/session_course_list.php

@@ -89,7 +89,7 @@ foreach ($Courses as $key=>$enreg) {
 	$course[] = '<a href="session_course_user_list.php?id_session='.$id_session.'&course_code='.$enreg['c_id'].'">'.$enreg['nbr_users'].' '.get_lang('Users').'</a>';
 	$course[] = '<a href="'.api_get_path(WEB_COURSE_PATH).$enreg['c_id'].'/index.php?id_session='.$id_session.'">'.Display::return_icon('course_home.gif', get_lang('Course')).'</a>
                 <a href="session_course_edit.php?id_session='.$id_session.'&page=session_course_list.php&course_code='.$enreg['c_id'].'">'.Display::return_icon('edit.gif', get_lang('Edit')).'</a>
-				<a href="'.api_get_self().'?id_session='.$id_session.'&sort='.$sort.'&action=delete&idChecked[]='.$enreg['c_id'].'" onclick="javascript:if(!confirm(\''.addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset)).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
+				<a href="'.api_get_self().'?id_session='.$id_session.'&sort='.$sort.'&action=delete&idChecked[]='.$enreg['c_id'].'" onclick="javascript:if(!confirm(\''.addslashes(get_lang("ConfirmYourChoice")).'\')) return false;">'.Display::return_icon('delete.gif', get_lang('Delete')).'</a>';
 	$tableCourses[] = $course;
 }
 echo '<form method="post" action="'.api_get_self().'">';

+ 3 - 5
main/admin/settings.lib.php

@@ -1005,7 +1005,6 @@ function delete_template($id) {
     // Display a feedback message.
     Display::display_confirmation_message(get_lang('TemplateDeleted'));
 }
-
 /**
  * Returns the list of timezone identifiers used to populate the select
  * This function is called through a call_user_func() in the generate_settings_form function.
@@ -1028,8 +1027,6 @@ function select_timezone_value() {
 function select_gradebook_number_decimals() {
     return array('0', '1', '2');
 }
-
-
 function select_gradebook_default_grade_model_id() {
     $grade_model = new GradeModel();
     $models = $grade_model->get_all();
@@ -1140,10 +1137,10 @@ function generate_settings_form($settings, $settings_by_access_list, $settings_t
                 if (empty($row['category']))
                     $row['category'] = 0;
 
-                if (is_array($settings_by_access_list[$row['variable']][ $row['subkey']][ $row['category']])) {
+                if (is_array($settings_by_access_list[ $row['variable'] ] [ $row['subkey'] ] [ $row['category'] ])) {
                     // We are sure that the other site have a selected value.
                     if ($settings_by_access_list[ $row['variable'] ] [ $row['subkey'] ] [ $row['category'] ]['selected_value'] != '') {
-                        $row['selected_value'] = $settings_by_access_list[$row['variable']][$row['subkey']][ $row['category']]['selected_value'];
+                        $row['selected_value'] =$settings_by_access_list[$row['variable']] [$row['subkey']] [ $row['category'] ]['selected_value'];
                     }
                 }
                 // There is no else{} statement because we load the default $row['selected_value'] of the main Chamilo site.
@@ -1161,6 +1158,7 @@ function generate_settings_form($settings, $settings_by_access_list, $settings_t
                     $form->addElement('text', $row['variable'], array(get_lang($row['title']), get_lang($row['comment'])), array('maxlength' => '5'));
                     $form->applyFilter($row['variable'], 'html_filter');
                     $default_values[$row['variable']] = $row['selected_value'];
+
                 } else {
                     $hideme['class'] = 'span4';
                     $form->addElement('text', $row['variable'], array(get_lang($row['title']), get_lang($row['comment'])), $hideme);

+ 3 - 0
main/admin/settings.php

@@ -438,6 +438,8 @@ $action_images['templates'] = 'template.png';
 $action_images['plugins'] = 'plugins.png';
 $action_images['shibboleth'] = 'shibboleth.png';
 $action_images['facebook'] = 'facebook.png';
+// @todo Use a different image.
+$action_images['logtransactions'] = 'tuning.png';
 
 $action_array = array();
 $resultcategories = array();
@@ -462,6 +464,7 @@ $resultcategories[] = array('category' => 'LDAP');
 $resultcategories[] = array('category' => 'CAS');
 $resultcategories[] = array('category' => 'Shibboleth');
 $resultcategories[] = array('category' => 'Facebook');
+$resultcategories[] = array('category' => 'LogTransactions');
 
 
 foreach ($resultcategories as $row) {

+ 1 - 1
main/admin/system_announcements.php

@@ -245,7 +245,7 @@ if ($show_announcement_list) {
         $row[] = "<a href=\"?id=".$announcement->id."&amp;person=".SystemAnnouncementManager::VISIBLE_GUEST."&amp;action=". ($announcement->visible_guest ? 'make_invisible' : 'make_visible')."\">".Display::return_icon(($announcement->visible_guest  ? 'visible.gif' : 'invisible.gif'), get_lang('ShowOrHide'))."</a>";
 
         $row[] = $announcement->lang;
-        $row[] = "<a href=\"?action=edit&id=".$announcement->id."\">".Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL)."</a> <a href=\"?action=delete&id=".$announcement->id."\"  onclick=\"javascript:if(!confirm('".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES))."')) return false;\">".Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL)."</a>";
+        $row[] = "<a href=\"?action=edit&id=".$announcement->id."\">".Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL)."</a> <a href=\"?action=delete&id=".$announcement->id."\"  onclick=\"javascript:if(!confirm('".addslashes(get_lang("ConfirmYourChoice"))."')) return false;\">".Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL)."</a>";
         $announcement_data[] = $row;
     }
     $table = new SortableTableFromArray($announcement_data);

+ 1 - 1
main/admin/user_fields.php

@@ -249,7 +249,7 @@ function modify_field_filter($changeability, $url_params, $row) {
 function edit_filter($id, $url_params, $row) {
     global $charset;
     $return = '<a href="user_fields_add.php?action=edit&field_id=' . $row[0] . '&field_type=' . $row[2] . '&sec_token=' . Security::getCurrentToken() . '">' . Display::return_icon('edit.png', get_lang('Edit')) . '</a>';
-    $return .= ' <a href="' . api_get_self() . '?action=delete&field_id=' . $row[0] . '&sec_token=' . Security::getCurrentToken() . '" onclick="javascript:if(!confirm(' . "'" . addslashes(api_htmlentities(get_lang("ConfirmYourChoice"), ENT_QUOTES, $charset)) . "'" . ')) return false;">' .
+    $return .= ' <a href="' . api_get_self() . '?action=delete&field_id=' . $row[0] . '&sec_token=' . Security::getCurrentToken() . '" onclick="javascript:if(!confirm(' . "'" . addslashes(get_lang("ConfirmYourChoice")) . "'" . ')) return false;">' .
             Display::return_icon('delete.png', get_lang('Delete')) . '</a>';
     return $return;
 }

+ 70 - 67
main/admin/user_list.php

@@ -21,7 +21,7 @@ if (isset($_configuration['deny_delete_users']) &&  $_configuration['deny_delete
 }
 $url = api_get_path(WEB_AJAX_PATH).'course.ajax.php?a=get_user_courses';
 $urlSession = api_get_path(WEB_AJAX_PATH).'session.ajax.php?a=get_user_sessions';
-        
+
 $htmlHeadXtra[] = '<script>
 function load_course_list (div_course,my_user_id) {
 	 $.ajax({
@@ -77,7 +77,7 @@ function active_user(element_div) {
 				if (data == 1) {
 					$(ident).attr("src","'.api_get_path(WEB_IMG_PATH).'icons/16/accept.png'.'");
 					$(ident).attr("title","'.get_lang('Lock').'");
-				} 
+				}
                 if (data == 0) {
 					$(ident).attr("src","'.api_get_path(WEB_IMG_PATH).'icons/16/error.png'.'");
 					$(ident).attr("title","'.get_lang('Unlock').'");
@@ -114,24 +114,24 @@ $(document).ready(function() {
 
     var select_val = $("#input_select_extra_data").val();
     if ( document.getElementById(\'extra_data_text\')) {
-    
+
         if (select_val != 0) {
             document.getElementById(\'extra_data_text\').style.display="block";
-            if (document.getElementById(\'input_extra_text\')) 
+            if (document.getElementById(\'input_extra_text\'))
                 document.getElementById(\'input_extra_text\').value = "";
         } else {
             document.getElementById(\'extra_data_text\').style.display="none";
         }
     }
-    
-    
+
+
     $(".agenda_opener").live("click", function() {
         var url = this.href;
         var dialog = $("#dialog");
-                
+
         if ($("#dialog").length == 0) {
             dialog = $(\'<div id="dialog" style="display:hidden"></div> \').appendTo(\'body\');
-        }     
+        }
         // load remote content
         dialog.load(
                 url,
@@ -142,11 +142,11 @@ $(document).ready(function() {
             );
         //prevent the browser to follow the link
         return false;
-    });    
+    });
 });
 
 //Load user calendar
-function load_calendar(user_id, month, year) {  
+function load_calendar(user_id, month, year) {
  	var url = "'.api_get_path(WEB_AJAX_PATH).'agenda.ajax.php?a=get_user_agenda&user_id=" +user_id + "&month="+month+"&year="+year;
 	$("#dialog").load(url);
 }
@@ -165,20 +165,20 @@ api_protect_admin_script(true);
 *	@author Evie Embrechts
 *   @author Yannick Warnier <yannick.warnier@dokeos.com>
 */
-function login_user($user_id) {    
+function login_user($user_id) {
     $user_id = intval($user_id);
-    
+
     if (empty($user_id)) {
         return false;
     }
     if ($user_id != strval(intval($user_id))) {
     	return false;
     }
-    
+
     //Only superadmins can login to admin accounts
     if (!api_global_admin_can_edit_admin($user_id)) {
         return false;
-    }    
+    }
 
     //Load $_user to be sure we clean it before logging in
 	global $uidReset, $loginFailed, $_user;
@@ -219,11 +219,10 @@ function login_user($user_id) {
 			LEFT JOIN $track_e_login_table login
 			ON user.user_id = login.login_user_id
 			WHERE user.user_id = '".$user_id."'
-			ORDER BY login.login_date DESC LIMIT 1";		
+			ORDER BY login.login_date DESC LIMIT 1";
 
 		$sql_result = Database::query($sql_query);
 
-
 		if (Database::num_rows($sql_result) > 0) {
 			// Extracting the user data
 
@@ -270,6 +269,7 @@ function login_user($user_id) {
 		}
 	}
 }
+
 /**
  * Get the total number of users on the platform
  * @see SortableTable#get_total_number_of_items()
@@ -293,6 +293,7 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
 
 	$user_table = Database :: get_main_table(TABLE_MAIN_USER);
 	$admin_table = Database :: get_main_table(TABLE_MAIN_ADMIN);
+
 	$select = "SELECT
                  u.user_id				AS col0,
                  u.official_code		AS col2,
@@ -344,6 +345,7 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
 		$keyword_status = Database::escape_string($_GET['keyword_status']);
 
 		$query_admin_table = '';
+
         $and_conditions = array();
 
 		if ($keyword_status == SESSIONADMIN) {
@@ -352,7 +354,6 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
 			$and_conditions[] = ' a.user_id = u.user_id ';
 		}
 
-		
         if (isset($_GET['keyword_extra_data'])) {
         	if (!empty($_GET['keyword_extra_data']) && !empty($_GET['keyword_extra_data_text'])) {
             	$keyword_extra_data_text = Database::escape_string($_GET['keyword_extra_data_text']);
@@ -390,7 +391,7 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
 		}
         if (!empty($and_conditions)) {
             $sql .= implode(' AND ', $and_conditions);
-		}
+        }
 		$sql .= " ) ";
 	}
 
@@ -409,10 +410,10 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
 
         $sql .= "AND password LIKE '$easyPassword' ";
     }
-
     if (!in_array($direction, array('ASC','DESC'))) {
     	$direction = 'ASC';
     }
+
     $column = intval($column);
     $from 	= intval($from);
     $number_of_items = intval($number_of_items);
@@ -423,19 +424,19 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
         $user = Database::fetch_array($res);
         return $user['total_rows'];
     }
-	$sql .= " ORDER BY col$column $direction ";
-	$sql .= " LIMIT $from,$number_of_items";
 
-	$res = Database::query($sql);
+    $sql .= " ORDER BY col$column $direction ";
+	$sql .= " LIMIT $from,$number_of_items";
+    $res = Database::query($sql);
 
 	$users = array ();
     $t = time();
-	while ($user = Database::fetch_row($res)) {        
+	while ($user = Database::fetch_row($res)) {
 		$image_path 	= UserManager::get_user_picture_path_by_id($user[0], 'web', false, true);
 		$user_profile 	= UserManager::get_picture_user($user[0], $image_path['file'], 22, USER_IMAGE_SIZE_SMALL, ' width="22" height="22" ');
 		if (!api_is_anonymous()) {
 			$photo = '<center><a href="'.api_get_path(WEB_CODE_PATH).'?social/profile.php&u='.$user[0].'" title="'.get_lang('Info').'">
-                            <img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2],$user[3]).'"  title="'.api_get_person_name($user[2], $user[3]).'" /></a></center>';
+                            <img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2],$user[3]).'" title="'.api_get_person_name($user[2], $user[3]).'" /></a></center>';
 		} else {
 			$photo = '<center><img src="'.$user_profile['file'].'" '.$user_profile['style'].' alt="'.api_get_person_name($user[2], $user[3]).'" title="'.api_get_person_name($user[2], $user[3]).'" /></center>';
 		}
@@ -448,7 +449,7 @@ function get_user_data($from, $number_of_items, $column, $direction, $get_count
             }
         }
         // forget about the expiration date field
-        $users[] = array($user[0], $photo, $user[1],$user[2], $user[3], $user[4], $user[5], $roles[$user[6]], $user[7], api_get_local_time($user[9]), $user[0]);
+        $users[] = array($user[0], $photo, $user[1],$user[2], $user[3], $user[4], $user[5], $user[6], $user[7], api_get_local_time($user[9]), $user[0]);
 	}
 	return $users;
 }
@@ -479,7 +480,7 @@ function user_filter($name, $params, $row) {
  * @return string Some HTML-code with modify-buttons
  */
 function modify_filter($user_id, $url_params, $row) {
-	global $charset, $_admins_list, $delete_user_available;    
+	global $charset, $_admins_list, $delete_user_available;
     $is_admin = false;
     if (is_array($_admins_list)) {
 	    $is_admin   = in_array($user_id,$_admins_list);
@@ -487,7 +488,7 @@ function modify_filter($user_id, $url_params, $row) {
 	$statusname = api_get_status_langvars();
 	$user_is_anonymous = false;
     $current_user_status_label = $row['7'];
-        
+
 	if ($current_user_status_label == $statusname[ANONYMOUS]) {
 		$user_is_anonymous =true;
 	}
@@ -531,45 +532,45 @@ function modify_filter($user_id, $url_params, $row) {
             )
         )
     ) {
-    	if (!$user_is_anonymous) {
+        if (!$user_is_anonymous) {
             if (api_global_admin_can_edit_admin($user_id)) {
                 // everything looks good, show "login as" link
                 $result .= '<a href="user_list.php?action=login_as&amp;user_id='.$user_id.'&amp;sec_token='.$_SESSION['sec_token'].'">'.Display::return_icon('login_as.gif', get_lang('LoginAs')).'</a>&nbsp;&nbsp;';
             } else {
                 // if this user in particular can't be edited, show disabled
-                $result .= Display::return_icon('login_as_na.gif', get_lang('LoginAs')).'&nbsp;&nbsp;';                
+                $result .= Display::return_icon('login_as_na.gif', get_lang('LoginAs')).'&nbsp;&nbsp;';
             }
-            //$result .= '<a href="user_list.php?action=login_as&amp;user_id='.$user_id.'&amp;sec_token='.$_SESSION['sec_token'].'">'.Display::return_icon('login_as.gif', get_lang('LoginAs')).'</a>&nbsp;&nbsp;';
-    	} else {
+        } else {
             // if anonymous user but other users show the option, show disabled
-    		$result .= Display::return_icon('login_as_na.gif', get_lang('LoginAs')).'&nbsp;&nbsp;';
-    	}
+            $result .= Display::return_icon('login_as_na.gif', get_lang('LoginAs')).'&nbsp;&nbsp;';
+        }
     } // Else don't show anything, because the option is not available at all
 
+
     //$result .= Display::url('<i class="icon-key icon-large"></i>', 'roles');
-    
+
 	if ($current_user_status_label != $statusname[STUDENT]) {
 		$result .= Display::return_icon('statistics_na.gif', get_lang('Reporting')).'&nbsp;&nbsp;';
 	} else {
 		$result .= '<a href="../mySpace/myStudents.php?student='.$user_id.'">'.Display::return_icon('statistics.gif', get_lang('Reporting')).'</a>&nbsp;&nbsp;';
 	}
 
-	if (api_is_platform_admin(true)) {        
-        
+	if (api_is_platform_admin(true)) {
+
 		if (!$user_is_anonymous && api_global_admin_can_edit_admin($user_id, null, true)) {
             $result .= '<a href="user_edit.php?user_id='.$user_id.'">'.Display::return_icon('edit.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>&nbsp;';
 		} else {
             $result .= Display::return_icon('edit_na.png', get_lang('Edit'), array(), ICON_SIZE_SMALL).'</a>&nbsp;';
 		}
 	}
-    
-    
+
+
 	if ($is_admin) {
 		$result .= Display::return_icon('admin_star.png', get_lang('IsAdministrator'),array('width'=> ICON_SIZE_SMALL, 'heigth'=> ICON_SIZE_SMALL));
 	} else {
 		$result .= Display::return_icon('admin_star_na.png', get_lang('IsNotAdministrator'));
 	}
-	
+
 
 	// actions for assigning sessions, courses or users
 	if (api_is_session_admin()) {
@@ -585,17 +586,17 @@ function modify_filter($user_id, $url_params, $row) {
 			$result .= '<a href="dashboard_add_sessions_to_user.php?user='.$user_id.'">'.Display::return_icon('view_more_stats.gif', get_lang('AssignSessions')).'</a>&nbsp;&nbsp;';
 		}
 	}
-	
-    if (api_is_platform_admin()) {        
+
+    if (api_is_platform_admin()) {
         $result .= ' <a href="'.api_get_path(WEB_AJAX_PATH).'agenda.ajax.php?a=get_user_agenda&amp;user_id='.$user_id.'" class="agenda_opener">'.Display::return_icon('month.png', get_lang('FreeBusyCalendar'), array(), ICON_SIZE_SMALL).'</a>';
         if ($delete_user_available) {
-            if ($user_id != api_get_user_id() && !$user_is_anonymous && api_global_admin_can_edit_admin($user_id)) {                  
+            if ($user_id != api_get_user_id() && !$user_is_anonymous && api_global_admin_can_edit_admin($user_id)) {
                 // you cannot lock yourself out otherwise you could disable all the accounts including your own => everybody is locked out and nobody can change it anymore.
-                $result .= ' <a href="user_list.php?action=delete_user&amp;user_id='.$user_id.'&amp;'.$url_params.'&amp;sec_token='.$_SESSION['sec_token'].'"  onclick="javascript:if(!confirm('."'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES,$charset))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
+                $result .= ' <a href="user_list.php?action=delete_user&amp;user_id='.$user_id.'&amp;'.$url_params.'&amp;sec_token='.Security::getCurrentToken().'"  onclick="javascript:if(!confirm('."'".addslashes(get_lang("ConfirmYourChoice"))."'".')) return false;">'.Display::return_icon('delete.png', get_lang('Delete'), array(), ICON_SIZE_SMALL).'</a>';
             } else {
                 $result .= Display::return_icon('delete_na.png', get_lang('Delete'), array(), ICON_SIZE_SMALL);
             }
-        }       
+        }
     }
 	return $result;
 }
@@ -628,7 +629,7 @@ function active_filter($active, $url_params, $row) {
     if ($action=='edit') {
         $result = Display::return_icon($image.'.png', get_lang('AccountExpired'), array(), 16);
     } elseif ($row['0']<>$_user['user_id']) {
-    	// you cannot lock yourself out otherwise you could disable all the accounts including your own => everybody is locked out and nobody can change it anymore.		
+    	// you cannot lock yourself out otherwise you could disable all the accounts including your own => everybody is locked out and nobody can change it anymore.
 		$result = Display::return_icon($image.'.png', get_lang(ucfirst($action)), array('onclick'=>'active_user(this);', 'id'=>'img_'.$row['0']), 16).'</a>';
 	}
 	return $result;
@@ -662,7 +663,7 @@ if (isset($_GET['keyword']) || isset($_GET['keyword_firstname'])) {
 $message = '';
 
 if (!empty($action)) {
-	$check = Security::check_token('get');    
+	$check = Security::check_token('get');
 	if ($check) {
 		switch ($action) {
             case 'add_user_to_my_url':
@@ -672,7 +673,7 @@ if (!empty($action)) {
                     $user_info = api_get_user_info($user_id);
                     $message = get_lang('UserAdded').' '.$user_info['firstname'].' '.$user_info['lastname'].' ('.$user_info['username'].')';
                     $message  = Display::return_message($message, 'confirmation');
-                }                
+                }
                 break;
             case 'login_as':
                 $login_as_user_id = $_GET["user_id"];
@@ -696,7 +697,7 @@ if (!empty($action)) {
 				if (api_is_platform_admin()) {
                     $user_to_delete = $_GET['user_id'];
                     $current_user_id = api_get_user_id();
-                    
+
 					if ($delete_user_available && api_global_admin_can_edit_admin($_GET['user_id'])) {
 						if ($user_to_delete != $current_user_id && UserManager :: delete_user($_GET['user_id'])) {
 							$message = Display :: return_message(get_lang('UserDeleted'), 'confirmation');
@@ -721,10 +722,10 @@ if (!empty($action)) {
 							}
 						}
 					}
-					if ($number_of_selected_users == $number_of_deleted_users) {						
+					if ($number_of_selected_users == $number_of_deleted_users) {
                         $message = Display :: return_message(get_lang('SelectedUsersDeleted'), 'confirmation');
 					} else {
-                        $message = Display :: return_message(get_lang('SomeUsersNotDeleted'), 'error');						
+                        $message = Display :: return_message(get_lang('SomeUsersNotDeleted'), 'error');
 					}
 				}
 				break;
@@ -747,7 +748,7 @@ if (api_is_platform_admin()) {
 		 '<a href="'.api_get_path(WEB_CODE_PATH).'admin/user_add.php">'.Display::return_icon('new_user.png',get_lang('AddUsers'),'',ICON_SIZE_MEDIUM).'</a>'.
 		 '</span>';
 }
-$actions .=$form->return_form();
+$actions .= $form->return_form();
 
 if (isset ($_GET['keyword'])) {
 	$parameters = array ('keyword' => Security::remove_XSS($_GET['keyword']));
@@ -761,6 +762,7 @@ if (isset ($_GET['keyword'])) {
 	$parameters['keyword_active'] 		= Security::remove_XSS($_GET['keyword_active']);
 	$parameters['keyword_inactive'] 	= Security::remove_XSS($_GET['keyword_inactive']);
 }
+
 // Create a sortable table with user-data
 $parameters['sec_token'] = Security::get_token();
 
@@ -773,7 +775,7 @@ while ($row_admin = Database::fetch_row($res_admin)) {
 	$_admins_list[] = $row_admin[0];
 }
 
-// display advaced search form
+// display advanced search form
 $form = new FormValidator('advanced_search','get');
 
 $form->addElement('html','<div id="advanced_search_form" style="display:none;">');
@@ -888,27 +890,27 @@ $extra_search_options = '';
 
 //Try to search the user everywhere
 if ($table->get_total_number_of_items() == 0) {
-    
-    if (api_get_multiple_access_url() && isset($_REQUEST['keyword'])) {     
+
+    if (api_get_multiple_access_url() && isset($_REQUEST['keyword'])) {
         $keyword = Database::escape_string($_REQUEST['keyword']);
         //$conditions = array('firstname' => $keyword, 'lastname' => $keyword, 'username' => $keyword);
         $conditions = array('username' => $keyword);
-        $user_list = UserManager::get_user_list($conditions, array(), false, ' OR ');        
+        $user_list = UserManager::get_user_list($conditions, array(), false, ' OR ');
         if (!empty($user_list)) {
-            
+
             $extra_search_options = Display::page_subheader(get_lang('UsersFoundInOtherPortals'));
-            
+
             $table = new HTML_Table(array('class' => 'data_table'));
             $column = 0;
-            $row = 0;            
+            $row = 0;
             $headers = array(get_lang('User'), 'URL', get_lang('Actions'));
             foreach ($headers as $header) {
                 $table->setHeaderContents($row, $column, $header);
                 $column++;
             }
             $row++;
-            
-            foreach ($user_list as $user) {      
+
+            foreach ($user_list as $user) {
                 $column = 0;
                 $access_info = UrlManager::get_access_url_from_user($user['user_id']);
                 $access_info_to_string = '';
@@ -916,18 +918,18 @@ if ($table->get_total_number_of_items() == 0) {
                 if (!empty($access_info)) {
                     foreach ($access_info as $url_info) {
                         if ($current_access_url_id == $url_info['access_url_id']) {
-                            $add_user = false;                            
+                            $add_user = false;
                         }
                         $access_info_to_string .= $url_info['url'].'<br />';
                     }
                 }
-                if ($add_user) {   
+                if ($add_user) {
                     $row_table = array();
                     $row_table[] =  api_get_person_name($user['firstname'], $user['lastname']).' ('.$user['username'].') ';
                     $row_table[] =  $access_info_to_string;
-                    $url = api_get_self().'?action=add_user_to_my_url&user_id='.$user['user_id'].'&sec_token='.$_SESSION['sec_token'];
+                    $url = api_get_self().'?action=add_user_to_my_url&user_id='.$user['user_id'].'&sec_token='.Security::getCurrentToken();
                     $row_table[] =  Display::url(get_lang('AddUserToMyURL'), $url, array('class' => 'btn'));
-                    	
+
                     foreach ($row_table as $cell) {
                         $table->setCellContents($row, $column, $cell);
                         $table->updateCellAttributes($row, $column, 'align="center"');
@@ -940,12 +942,13 @@ if ($table->get_total_number_of_items() == 0) {
             $extra_search_options .= $table->toHtml();
             $table_result = '';
         }
-    }    
+    }
 }
 
-$tpl = new Template($tool_name);
+$app['title'] = $tool_name;
+$tpl = $app['template'];
 
 $tpl->assign('actions', $actions);
 $tpl->assign('message', $message);
 $tpl->assign('content', $form.$table_result.$extra_search_options);
-$tpl->display_one_col_template();
+//$tpl->display_one_col_template();

+ 2 - 2
main/admin/usergroups.php

@@ -73,7 +73,7 @@ return \''
 .' <a href="add_courses_to_usergroup.php?id=\'+options.rowId+\'">'.Display::return_icon('course_to_class.png', get_lang('SubscribeClassToCourses')).'</a>'
 .' <a href="add_sessions_to_usergroup.php?id=\'+options.rowId+\'">'.Display::return_icon('sessions_to_class.png', get_lang('SubscribeClassToSessions')).'</a>'
 .' <a href="?action=edit&id=\'+options.rowId+\'">'.Display::return_icon('edit.png', get_lang('Edit')).'</a>'
-.' <a onclick="javascript:if(!confirm('."\'".addslashes(api_htmlentities(get_lang("ConfirmYourChoice"),ENT_QUOTES))."\'".')) return false;" href="?action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>\';
+.' <a onclick="javascript:if(!confirm('."\'".addslashes(get_lang("ConfirmYourChoice"))."\'".')) return false;" href="?action=delete&id=\'+options.rowId+\'">'.Display::return_icon('delete.png', get_lang('Delete')).'</a>\';
 }';
 ?>
 <script>
@@ -169,4 +169,4 @@ elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && is_numeric($_GE
 } else {
     $usergroup->display();
 }
-Display :: display_footer();
+Display :: display_footer();

+ 236 - 146
main/auth/profile.php

@@ -1,13 +1,13 @@
 <?php
 /* For licensing terms, see /license.txt */
 /**
-* This file displays the user's profile,
-* optionally it allows users to modify their profile as well.
-*
-* See inc/conf/profile.conf.php to modify settings
-*
-* @package chamilo.auth
-*/
+ * This file displays the user's profile,
+ * optionally it allows users to modify their profile as well.
+ *
+ * See inc/conf/profile.conf.php to modify settings
+ *
+ * @package chamilo.auth
+ */
 /**
  * Code
  */
@@ -17,6 +17,10 @@ $language_file = array('registration', 'messages', 'userInfo');
 $cidReset = true;
 require_once '../inc/global.inc.php';
 
+if (api_is_profile_readable() == false) {
+    api_not_allowed(true);
+}
+
 if (api_get_setting('allow_social_tool') == 'true') {
     $this_section = SECTION_SOCIAL;
 } else {
@@ -42,23 +46,23 @@ function confirmation(name) {
     }
 }
 function show_image(image,width,height) {
-    width = parseInt(width) + 20;
-    height = parseInt(height) + 20;
-    window_x = window.open(image,\'windowX\',\'width=\'+ width + \', height=\'+ height + \'\');
+	width = parseInt(width) + 20;
+	height = parseInt(height) + 20;
+	window_x = window.open(image,\'windowX\',\'width=\'+ width + \', height=\'+ height + \'\');
 
 }
 function generate_open_id_form() {
-    $.ajax({
-        contentType: "application/x-www-form-urlencoded",
-        beforeSend: function(objeto) {
-        /*$("#div_api_key").html("Loading...");*/ },
-        type: "POST",
-        url: "'.api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php?a=generate_api_key",
-        data: "num_key_id="+"",
-        success: function(datos) {
-         $("#div_api_key").html(datos);
-        }
-    });
+	$.ajax({
+		contentType: "application/x-www-form-urlencoded",
+		beforeSend: function(objeto) {
+		/*$("#div_api_key").html("Loading...");*/ },
+		type: "POST",
+		url: "'.api_get_path(WEB_AJAX_PATH).'user_manager.ajax.php?a=generate_api_key",
+		data: "num_key_id="+"",
+		success: function(datos) {
+		 $("#div_api_key").html(datos);
+		}
+	});
 }
 
 function hide_icon_edit(element_html)  {
@@ -71,7 +75,6 @@ function show_icon_edit(element_html) {
 }
 </script>';
 
-//$interbreadcrumb[] = array('url' => '../auth/profile.php', 'name' => get_lang('ModifyProfile'));
 if (!empty ($_GET['coursePath'])) {
     $course_url = api_get_path(WEB_COURSE_PATH).htmlentities(strip_tags($_GET['coursePath'])).'/index.php';
     $interbreadcrumb[] = array('url' => $course_url, 'name' => Security::remove_XSS($_GET['courseCode']));
@@ -86,20 +89,18 @@ if (!empty($_GET['fe'])) {
 $jquery_ready_content = '';
 if (api_get_setting('allow_message_tool') == 'true') {
     $jquery_ready_content = <<<EOF
-            $(".message-content .message-delete").click(function(){
-                $(this).parents(".message-content").animate({ opacity: "hide" }, "slow");
-                $(".message-view").animate({ opacity: "show" }, "slow");
-            });
+			$(".message-content .message-delete").click(function(){
+				$(this).parents(".message-content").animate({ opacity: "hide" }, "slow");
+				$(".message-view").animate({ opacity: "show" }, "slow");
+			});
 EOF;
 }
 
-
 // Libraries
-
-$tool_name = is_profile_editable() ? get_lang('ModifProfile') : get_lang('ViewProfile');
+$tool_name = api_is_profile_editable() ? get_lang('ModifProfile') : get_lang('ViewProfile');
 $table_user = Database :: get_main_table(TABLE_MAIN_USER);
 
-/*    Form    */
+/*	Form	*/
 
 /*
  * Get initial values for all fields.
@@ -119,15 +120,19 @@ if ($user_data !== false) {
 /*
  * Initialize the form.
  */
-$form = new FormValidator('profile', 'post', api_get_self()."?".str_replace('&fe=1', '', $_SERVER['QUERY_STRING']), null, array('style' => 'width: 70%; float: '.($text_dir == 'rtl' ? 'right;' : 'left;')));
+$form = new FormValidator('profile', 'post', api_get_self()."?".str_replace(
+    '&fe=1',
+    '',
+    $_SERVER['QUERY_STRING']
+), null, array('style' => 'width: 70%; float: '.($text_dir == 'rtl' ? 'right;' : 'left;')));
 
 if (api_is_western_name_order()) {
-    //    FIRST NAME and LAST NAME
+    //	FIRST NAME and LAST NAME
     $form->addElement('text', 'firstname', get_lang('FirstName'), array('size' => 40));
-    $form->addElement('text', 'lastname',  get_lang('LastName'),  array('size' => 40));
+    $form->addElement('text', 'lastname', get_lang('LastName'), array('size' => 40));
 } else {
-    //    LAST NAME and FIRST NAME
-    $form->addElement('text', 'lastname',  get_lang('LastName'),  array('size' => 40));
+    //	LAST NAME and FIRST NAME
+    $form->addElement('text', 'lastname', get_lang('LastName'), array('size' => 40));
     $form->addElement('text', 'firstname', get_lang('FirstName'), array('size' => 40));
 }
 if (api_get_setting('profile', 'name') !== 'true') {
@@ -135,11 +140,16 @@ if (api_get_setting('profile', 'name') !== 'true') {
 }
 $form->applyFilter(array('lastname', 'firstname'), 'stripslashes');
 $form->applyFilter(array('lastname', 'firstname'), 'trim');
-$form->addRule('lastname' , get_lang('ThisFieldIsRequired'), 'required');
+$form->addRule('lastname', get_lang('ThisFieldIsRequired'), 'required');
 $form->addRule('firstname', get_lang('ThisFieldIsRequired'), 'required');
 
-//    USERNAME
-$form->addElement('text', 'username', get_lang('UserName'), array('id' => 'username', 'maxlength' => USERNAME_MAX_LENGTH, 'size' => USERNAME_MAX_LENGTH));
+//	USERNAME
+$form->addElement(
+    'text',
+    'username',
+    get_lang('UserName'),
+    array('maxlength' => USERNAME_MAX_LENGTH, 'size' => USERNAME_MAX_LENGTH)
+);
 if (api_get_setting('profile', 'login') !== 'true') {
     $form->freeze('username');
 }
@@ -149,7 +159,7 @@ $form->addRule('username', get_lang('ThisFieldIsRequired'), 'required');
 $form->addRule('username', get_lang('UsernameWrong'), 'username');
 $form->addRule('username', get_lang('UserTaken'), 'username_available', $user_data['username']);
 
-//    OFFICIAL CODE
+//	OFFICIAL CODE
 if (CONFVAL_ASK_FOR_OFFICIAL_CODE) {
     $form->addElement('text', 'official_code', get_lang('OfficialCode'), array('size' => 40));
     if (api_get_setting('profile', 'officialcode') !== 'true') {
@@ -157,18 +167,22 @@ if (CONFVAL_ASK_FOR_OFFICIAL_CODE) {
     }
     $form->applyFilter('official_code', 'stripslashes');
     $form->applyFilter('official_code', 'trim');
-    if (api_get_setting('registration', 'officialcode') == 'true' && api_get_setting('profile', 'officialcode') == 'true') {
+    if (api_get_setting('registration', 'officialcode') == 'true' && api_get_setting(
+        'profile',
+        'officialcode'
+    ) == 'true'
+    ) {
         $form->addRule('official_code', get_lang('ThisFieldIsRequired'), 'required');
     }
 }
 
-//    EMAIL
+//	EMAIL
 $form->addElement('email', 'email', get_lang('Email'), array('size' => 40));
 if (api_get_setting('profile', 'email') !== 'true') {
     $form->freeze('email');
 }
 
-if (api_get_setting('registration', 'email') == 'true' &&  api_get_setting('profile', 'email') == 'true') {
+if (api_get_setting('registration', 'email') == 'true' && api_get_setting('profile', 'email') == 'true') {
     $form->applyFilter('email', 'stripslashes');
     $form->applyFilter('email', 'trim');
     $form->addRule('email', get_lang('ThisFieldIsRequired'), 'required');
@@ -176,18 +190,18 @@ if (api_get_setting('registration', 'email') == 'true' &&  api_get_setting('prof
 }
 
 // OPENID URL
-if (is_profile_editable() && api_get_setting('openid_authentication') == 'true') {
+if (api_is_profile_editable() && api_get_setting('openid_authentication') == 'true') {
     $form->addElement('text', 'openid', get_lang('OpenIDURL'), array('size' => 40));
     if (api_get_setting('profile', 'openid') !== 'true') {
         $form->freeze('openid');
     }
     $form->applyFilter('openid', 'trim');
     //if (api_get_setting('registration', 'openid') == 'true') {
-    //    $form->addRule('openid', get_lang('ThisFieldIsRequired'), 'required');
+    //	$form->addRule('openid', get_lang('ThisFieldIsRequired'), 'required');
     //}
 }
 
-//    PHONE
+//	PHONE
 $form->addElement('text', 'phone', get_lang('phone'), array('size' => 20));
 if (api_get_setting('profile', 'phone') !== 'true') {
     $form->freeze('phone');
@@ -195,77 +209,107 @@ if (api_get_setting('profile', 'phone') !== 'true') {
 $form->applyFilter('phone', 'stripslashes');
 $form->applyFilter('phone', 'trim');
 /*if (api_get_setting('registration', 'phone') == 'true') {
-    $form->addRule('phone', get_lang('ThisFieldIsRequired'), 'required');
+	$form->addRule('phone', get_lang('ThisFieldIsRequired'), 'required');
 }
 $form->addRule('phone', get_lang('EmailWrong'), 'email');*/
 
-//    PICTURE
-if (is_profile_editable() && api_get_setting('profile', 'picture') == 'true') {
-    $form->addElement('file', 'picture', ($user_data['picture_uri'] != '' ? get_lang('UpdateImage') : get_lang('AddImage')));
+//	PICTURE
+if (api_is_profile_editable() && api_get_setting('profile', 'picture') == 'true') {
+    $form->addElement(
+        'file',
+        'picture',
+        ($user_data['picture_uri'] != '' ? get_lang('UpdateImage') : get_lang('AddImage'))
+    );
     $form->add_progress_bar();
     if (!empty($user_data['picture_uri'])) {
         $form->addElement('checkbox', 'remove_picture', null, get_lang('DelImage'));
     }
-    $allowed_picture_types = array ('jpg', 'jpeg', 'png', 'gif');
-    $form->addRule('picture', get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')', 'filetype', $allowed_picture_types);
+    $allowed_picture_types = array('jpg', 'jpeg', 'png', 'gif');
+    $form->addRule(
+        'picture',
+        get_lang('OnlyImagesAllowed').' ('.implode(',', $allowed_picture_types).')',
+        'filetype',
+        $allowed_picture_types
+    );
 }
 
-//    LANGUAGE
+//	LANGUAGE
 $form->addElement('select_language', 'language', get_lang('Language'));
 if (api_get_setting('profile', 'language') !== 'true') {
     $form->freeze('language');
 }
 
 //THEME
-if (is_profile_editable() && api_get_setting('user_selected_theme') == 'true') {
+if (api_is_profile_editable() && api_get_setting('user_selected_theme') == 'true') {
     $form->addElement('select_theme', 'theme', get_lang('Theme'));
     if (api_get_setting('profile', 'theme') !== 'true') {
         $form->freeze('theme');
     }
     $form->applyFilter('theme', 'trim');
 }
-
-
-//    EXTENDED PROFILE  this make the page very slow!
+//	EXTENDED PROFILE  this make the page very slow!
 if (api_get_setting('extended_profile') == 'true') {
     if (!isset($_GET['type']) || (isset($_GET['type']) && $_GET['type'] == 'extended')) {
         $width_extended_profile = 500;
         //$form->addElement('html', '<a href="javascript: void(0);" onclick="javascript: show_extend();"> show_extend_profile</a>');
         //$form->addElement('static', null, '<em>'.get_lang('OptionalTextFields').'</em>');
-        //    MY COMPETENCES
-        $form->add_html_editor('competences', get_lang('MyCompetences'), false, false, array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '130'));
-        //    MY DIPLOMAS
-        $form->add_html_editor('diplomas', get_lang('MyDiplomas'), false, false, array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '130'));
-        //    WHAT I AM ABLE TO TEACH
-        $form->add_html_editor('teach', get_lang('MyTeach'), false, false, array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '130'));
-
-        //    MY PRODUCTIONS
+        //	MY COMPETENCES
+        $form->add_html_editor(
+            'competences',
+            get_lang('MyCompetences'),
+            false,
+            false,
+            array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '130')
+        );
+        //	MY DIPLOMAS
+        $form->add_html_editor(
+            'diplomas',
+            get_lang('MyDiplomas'),
+            false,
+            false,
+            array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '130')
+        );
+        //	WHAT I AM ABLE TO TEACH
+        $form->add_html_editor(
+            'teach',
+            get_lang('MyTeach'),
+            false,
+            false,
+            array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '130')
+        );
+
+        //	MY PRODUCTIONS
         $form->addElement('file', 'production', get_lang('MyProductions'));
         if ($production_list = UserManager::build_production_list(api_get_user_id(), '', true)) {
             $form->addElement('static', 'productions_list', null, $production_list);
         }
-        //    MY PERSONAL OPEN AREA
-        $form->add_html_editor('openarea', get_lang('MyPersonalOpenArea'), false, false, array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '350'));
+        //	MY PERSONAL OPEN AREA
+        $form->add_html_editor(
+            'openarea',
+            get_lang('MyPersonalOpenArea'),
+            false,
+            false,
+            array('ToolbarSet' => 'Profile', 'Width' => $width_extended_profile, 'Height' => '350')
+        );
         $form->applyFilter(array('competences', 'diplomas', 'teach', 'openarea'), 'stripslashes');
-        $form->applyFilter(array('competences', 'diplomas', 'teach'), 'trim'); // openarea is untrimmed for maximum openness
+        $form->applyFilter(
+            array('competences', 'diplomas', 'teach'),
+            'trim'
+        ); // openarea is untrimmed for maximum openness
     }
 }
 
-//    PASSWORD, if auth_source is platform
-if (is_platform_authentication() && is_profile_editable() && api_get_setting('profile', 'password') == 'true') {
+//	PASSWORD, if auth_source is platform
+if (is_platform_authentication() && api_is_profile_editable() && api_get_setting('profile', 'password') == 'true') {
     $form->addElement(
         'password',
         'password0',
         array(get_lang('Pass'), get_lang('Enter2passToChange')),
-        array('id'=> 'password1', 'size' => 40)
+        array('size' => 40)
     );
-
-    if (isset($_configuration['allow_strength_pass_checker']) && $_configuration['allow_strength_pass_checker']) {
-        $form->addElement('label', null, '<div id="password_progress"></div>');
-    }
     $form->addElement('password', 'password1', get_lang('NewPass'), array('size' => 40));
     $form->addElement('password', 'password2', get_lang('Confirmation'), array('size' => 40));
-    //    user must enter identical password twice so we can prevent some user errors
+    //	user must enter identical password twice so we can prevent some user errors
     $form->addRule(array('password1', 'password2'), get_lang('PassTwo'), 'compare');
     if (CHECK_PASS_EASY_TO_FIND) {
         $form->addRule('password1', get_lang('CurrentPasswordEmptyOrIncorrect'), 'callback', 'api_check_password');
@@ -279,20 +323,30 @@ $return_params = $extraField->set_extra_fields_in_form($form, $extra_data, 'prof
 $jquery_ready_content = $return_params['jquery_ready_content'];
 
 // the $jquery_ready_content variable collects all functions that will be load in the $(document).ready javascript function
-$htmlHeadXtra[] ='<script>
+$htmlHeadXtra[] = '<script>
 $(document).ready(function(){
-    '.$jquery_ready_content.'
+	'.$jquery_ready_content.'
 });
 </script>';
 
 if (api_get_setting('profile', 'apikeys') == 'true') {
     $form->addElement('html', '<div id="div_api_key">');
-    $form->addElement('text', 'api_key_generate', get_lang('MyApiKey'), array('size' => 40, 'id' => 'id_api_key_generate'));
+    $form->addElement(
+        'text',
+        'api_key_generate',
+        get_lang('MyApiKey'),
+        array('size' => 40, 'id' => 'id_api_key_generate')
+    );
     $form->addElement('html', '</div>');
-    $form->addElement('button', 'generate_api_key', get_lang('GenerateApiKey'), array('id' => 'id_generate_api_key', 'onclick' => 'generate_open_id_form(); return false;')); //generate_open_id_form()
-}
-//    SUBMIT
-if (is_profile_editable()) {
+    $form->addElement(
+        'button',
+        'generate_api_key',
+        get_lang('GenerateApiKey'),
+        array('id' => 'id_generate_api_key', 'onclick' => 'generate_open_id_form()')
+    ); //generate_open_id_form()
+}
+//	SUBMIT
+if (api_is_profile_editable()) {
     $form->addElement('style_submit_button', 'apply_change', get_lang('SaveSettings'), 'class="save"');
 } else {
     $form->freeze();
@@ -301,7 +355,7 @@ if (is_profile_editable()) {
 $user_data = array_merge($user_data, $extra_data);
 $form->setDefaults($user_data);
 
-/*        FUNCTIONS   */
+/*		FUNCTIONS   */
 
 
 /**
@@ -312,22 +366,12 @@ $form->setDefaults($user_data);
 function is_platform_authentication()
 {
     $tab_user_info = api_get_user_info();
-    return $tab_user_info['auth_source'] == PLATFORM_AUTH_SOURCE;
-}
 
-/**
- * Returns whether a user can edit his/her profile. Defaults to false if
- * profileIsEditable is not set in $GLOBALS.
- *
- * @return    boolean    Editability of the profile
- */
-function is_profile_editable()
-{
-    return isset($GLOBALS['profileIsEditable']) ? $GLOBALS['profileIsEditable'] : false;
+    return $tab_user_info['auth_source'] == PLATFORM_AUTH_SOURCE;
 }
 
 /*
-    PRODUCTIONS FUNCTIONS
+	PRODUCTIONS FUNCTIONS
 */
 
 /**
@@ -353,6 +397,7 @@ function upload_user_production($user_id)
             return $filename;
         }
     }
+
     return false; // this should be returned if anything went wrong with the upload
 }
 
@@ -373,8 +418,10 @@ function check_user_password($password)
     $password = api_get_encrypted_password($password);
     $sql_password = "SELECT * FROM $table_user WHERE user_id='".$user_id."' AND password='".$password."'";
     $result = Database::query($sql_password);
+
     return Database::num_rows($result) != 0;
 }
+
 /**
  * Check current user's current password
  * @param    char    email
@@ -391,20 +438,21 @@ function check_user_email($email)
     $email = Database::escape_string($email);
     $sql_password = "SELECT * FROM $table_user WHERE user_id='".$user_id."' AND email='".$email."'";
     $result = Database::query($sql_password);
+
     return Database::num_rows($result) != 0;
 }
 
-/*        MAIN CODE */
-$filtered_extension         = false;
-$update_success             = false;
-$upload_picture_success     = false;
-$upload_production_success  = false;
-$msg_fail_changue_email     = false;
-$msg_is_not_password        = false;
+/*		MAIN CODE */
+$filtered_extension = false;
+$update_success = false;
+$upload_picture_success = false;
+$upload_production_success = false;
+$msg_fail_changue_email = false;
+$msg_is_not_password = false;
 
 if (is_platform_authentication()) {
     if (!empty($_SESSION['change_email'])) {
-        $msg_fail_changue_email= ($_SESSION['change_email'] == 'success');
+        $msg_fail_changue_email = ($_SESSION['change_email'] == 'success');
         unset($_SESSION['change_email']);
     } elseif (!empty($_SESSION['is_not_password'])) {
         $msg_is_not_password = ($_SESSION['is_not_password'] == 'success');
@@ -424,7 +472,7 @@ if (is_platform_authentication()) {
 if ($form->validate()) {
 
     $wrong_current_password = false;
-//    $user_data = $form->exportValues();
+//	$user_data = $form->exportValues();
     $user_data = $form->getSubmitValues();
 
     // set password if a new one was provided
@@ -448,24 +496,21 @@ if ($form->validate()) {
         $allow_users_to_change_email_with_no_password = false;
     }
 
-
-
-
     //If user sending the email to be changed (input available and not frozen )
     if (api_get_setting('profile', 'email') == 'true') {
+
         if ($allow_users_to_change_email_with_no_password) {
             if (!check_user_email($user_data['email'])) {
                 $changeemail = $user_data['email'];
                 //$_SESSION['change_email'] = 'success';
             }
-
         } else {
             //Normal behaviour
             if (!check_user_email($user_data['email']) && !empty($user_data['password0']) && !$wrong_current_password) {
                 $changeemail = $user_data['email'];
             }
 
-            if (!check_user_email($user_data['email']) && empty($user_data['password0'])){
+            if (!check_user_email($user_data['email']) && empty($user_data['password0'])) {
                 $_SESSION['change_email'] = 'success';
             }
         }
@@ -474,7 +519,12 @@ if ($form->validate()) {
 
     // Upload picture if a new one is provided
     if ($_FILES['picture']['size']) {
-        if ($new_picture = UserManager::update_user_picture(api_get_user_id(), $_FILES['picture']['name'], $_FILES['picture']['tmp_name'])) {
+        if ($new_picture = UserManager::update_user_picture(
+            api_get_user_id(),
+            $_FILES['picture']['name'],
+            $_FILES['picture']['tmp_name']
+        )
+        ) {
             $user_data['picture_uri'] = $new_picture;
             $_SESSION['image_uploaded'] = 'success';
         }
@@ -490,7 +540,10 @@ if ($form->validate()) {
             UserManager::remove_user_production(api_get_user_id(), urldecode($production));
         }
         if ($production_list = UserManager::build_production_list(api_get_user_id(), true, true)) {
-            $form->insertElementBefore($form->createElement('static', null, null, $production_list), 'productions_list');
+            $form->insertElementBefore(
+                $form->createElement('static', null, null, $production_list),
+                'productions_list'
+            );
         }
         $form->removeElement('productions_list');
         $file_deleted = true;
@@ -508,8 +561,8 @@ if ($form->validate()) {
     }
 
     // remove values that shouldn't go in the database
-    unset($user_data['password0'],$user_data['password1'], $user_data['password2'], $user_data['MAX_FILE_SIZE'],
-    $user_data['remove_picture'], $user_data['apply_change'],$user_data['email'] );
+    unset($user_data['password0'], $user_data['password1'], $user_data['password2'], $user_data['MAX_FILE_SIZE'],
+    $user_data['remove_picture'], $user_data['apply_change'], $user_data['email']);
 
     // Following RFC2396 (http://www.faqs.org/rfcs/rfc2396.html), a URI uses ':' as a reserved character
     // we can thus ensure the URL doesn't contain any scheme name by searching for ':' in the string
@@ -531,9 +584,9 @@ if ($form->validate()) {
     //Adding missing variables
 
     $available_values_to_modify = array();
-    foreach($profile_list as $key => $status) {
+    foreach ($profile_list as $key => $status) {
         if ($status == 'true') {
-            switch($key) {
+            switch ($key) {
                 case 'login':
                     $available_values_to_modify[] = 'username';
                     break;
@@ -552,7 +605,10 @@ if ($form->validate()) {
     }
 
     //Fixing missing variables
-    $available_values_to_modify = array_merge($available_values_to_modify, array('competences', 'diplomas', 'openarea', 'teach', 'openid'));
+    $available_values_to_modify = array_merge(
+        $available_values_to_modify,
+        array('competences', 'diplomas', 'openarea', 'teach', 'openid')
+    );
 
     // build SQL query
     $sql = "UPDATE $table_user SET";
@@ -564,12 +620,12 @@ if ($form->validate()) {
             if (is_array($value) && isset($value['Y']) && isset($value['F']) && isset($value['d'])) {
                 if (isset($value['H']) && isset($value['i'])) {
                     // extra field date time
-                    $time = mktime($value['H'],$value['i'],0,$value['F'],$value['d'],$value['Y']);
-                    $extras[$new_key] = date('Y-m-d H:i:s',$time);
+                    $time = mktime($value['H'], $value['i'], 0, $value['F'], $value['d'], $value['Y']);
+                    $extras[$new_key] = date('Y-m-d H:i:s', $time);
                 } else {
                     // extra field date
-                    $time = mktime(0,0,0,$value['F'],$value['d'],$value['Y']);
-                    $extras[$new_key] = date('Y-m-d',$time);
+                    $time = mktime(0, 0, 0, $value['F'], $value['d'], $value['Y']);
+                    $extras[$new_key] = date('Y-m-d', $time);
                 }
             } else {
                 $extras[$new_key] = $value;
@@ -594,13 +650,21 @@ if ($form->validate()) {
             $sql = rtrim($sql, ',');
         }
     } else {
+        //normal behaviour
+        if (empty($changeemail) && isset($password)) {
+            $sql .= " email = y@u.com";
+        }
         if (isset($changeemail) && !isset($password) && in_array('email', $available_values_to_modify)) {
             $sql .= " email = '".Database::escape_string($changeemail)."'";
-        } else {
-            if (isset($password) && in_array('password', $available_values_to_modify)) {
-                if (isset($changeemail) && in_array('email', $available_values_to_modify)) {
+        } elseif (isset($password) && isset($changeemail) && in_array('email', $available_values_to_modify) && in_array(
+            'password',
+            $available_values_to_modify
+        )
+        ) {
             $sql .= " email = '".Database::escape_string($changeemail)."',";
-                }
+            $password = api_get_encrypted_password($password);
+            $sql .= " password = '".Database::escape_string($password)."'";
+        } elseif (isset($password) && in_array('password', $available_values_to_modify)) {
             $password = api_get_encrypted_password($password);
             $sql .= " password = '".Database::escape_string($password)."'";
         } else {
@@ -611,7 +675,6 @@ if ($form->validate()) {
     if (api_get_setting('profile', 'officialcode') == 'true' && isset($user_data['official_code'])) {
         $sql .= ", official_code = '".Database::escape_string($user_data['official_code'])."'";
     }
-
     $sql .= " WHERE user_id  = '".api_get_user_id()."'";
     Database::query($sql);
 
@@ -620,7 +683,7 @@ if ($form->validate()) {
     //1. Deleting all user tags
     $list_extra_field_type_tag = UserManager::get_all_extra_field_by_type(ExtraField::FIELD_TYPE_TAG);
 
-    if (is_array($list_extra_field_type_tag) && count($list_extra_field_type_tag)>0) {
+    if (is_array($list_extra_field_type_tag) && count($list_extra_field_type_tag) > 0) {
         foreach ($list_extra_field_type_tag as $id) {
             UserManager::delete_user_tags(api_get_user_id(), $id);
         }
@@ -628,7 +691,7 @@ if ($form->validate()) {
 
     //2. Update the extra fields and user tags if available
 
-    if (is_array($extras) && count($extras)> 0) {
+    if (is_array($extras) && count($extras) > 0) {
         foreach ($extras as $key => $value) {
             //3. Tags are process in the UserManager::update_extra_field_value by the UserManager::process_tags function
             UserManager::update_extra_field_value(api_get_user_id(), $key, $value);
@@ -639,13 +702,16 @@ if ($form->validate()) {
     $_SESSION['_user']['uidReset'] = true;
     $_SESSION['noredirection'] = true;
     $_SESSION['profile_update'] = 'success';
-    $url = api_get_self()."?{$_SERVER['QUERY_STRING']}".($filtered_extension && strpos($_SERVER['QUERY_STRING'], '&fe=1') === false ? '&fe=1' : '');
+    $url = api_get_self()."?{$_SERVER['QUERY_STRING']}".($filtered_extension && strpos(
+        $_SERVER['QUERY_STRING'],
+        '&fe=1'
+    ) === false ? '&fe=1' : '');
     header("Location: ".$url);
     exit;
 }
 
 
-/*          MAIN DISPLAY SECTION  */
+/*  		MAIN DISPLAY SECTION  */
 // the header
 Display::display_header(get_lang('ModifyProfile'));
 
@@ -655,17 +721,33 @@ if (api_get_setting('allow_social_tool') != 'true') {
         echo '<div class="actions">';
 
         if (api_get_setting('allow_social_tool') == 'true' && api_get_setting('allow_message_tool') == 'true') {
-            echo '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php">'.Display::return_icon('shared_profile.png', get_lang('ViewSharedProfile')).'</a>';
+            echo '<a href="'.api_get_path(WEB_PATH).'main/social/profile.php">'.Display::return_icon(
+                'shared_profile.png',
+                get_lang('ViewSharedProfile')
+            ).'</a>';
         }
         if (api_get_setting('allow_message_tool') == 'true') {
-            echo '<a href="'.api_get_path(WEB_PATH).'main/messages/inbox.php">'.Display::return_icon('inbox.png', get_lang('Messages')).'</a>';
+            echo '<a href="'.api_get_path(WEB_PATH).'main/messages/inbox.php">'.Display::return_icon(
+                'inbox.png',
+                get_lang('Messages')
+            ).'</a>';
         }
         $show = isset($_GET['show']) ? '&amp;show='.Security::remove_XSS($_GET['show']) : '';
 
         if (isset($_GET['type']) && $_GET['type'] == 'extended') {
-            echo '<a href="profile.php?type=reduced'.$show.'">'.Display::return_icon('edit.png', get_lang('EditNormalProfile'),'',16).'</a>';
+            echo '<a href="profile.php?type=reduced'.$show.'">'.Display::return_icon(
+                'edit.png',
+                get_lang('EditNormalProfile'),
+                '',
+                16
+            ).'</a>';
         } else {
-            echo '<a href="profile.php?type=extended'.$show.'">'.Display::return_icon('edit.png', get_lang('EditExtendProfile'),'',16).'</a>';
+            echo '<a href="profile.php?type=extended'.$show.'">'.Display::return_icon(
+                'edit.png',
+                get_lang('EditExtendProfile'),
+                '',
+                16
+            ).'</a>';
         }
         echo '</div>';
     }
@@ -681,18 +763,18 @@ if (!empty($file_deleted)) {
     }
 
     if ($upload_production_success) {
-        $message.='<br />'.get_lang('ProductionUploaded');
+        $message .= '<br />'.get_lang('ProductionUploaded');
     }
     Display :: display_confirmation_message($message, false);
 }
 
 
-if (!empty($msg_fail_changue_email)){
-    $errormail=get_lang('ToChangeYourEmailMustTypeYourPassword');
+if (!empty($msg_fail_changue_email)) {
+    $errormail = get_lang('ToChangeYourEmailMustTypeYourPassword');
     Display :: display_error_message($errormail, false);
 }
 
-if (!empty($msg_is_not_password)){
+if (!empty($msg_is_not_password)) {
     $warning_msg = get_lang('CurrentPasswordEmptyOrIncorrect');
     Display :: display_warning_message($warning_msg, false);
 }
@@ -701,6 +783,8 @@ if (!empty($msg_is_not_password)){
 $image_syspath = UserManager::get_user_picture_path_by_id(api_get_user_id(), 'system', false, true);
 $image_syspath['dir'].$image_syspath['file'];
 
+//$image_size = api_getimagesize($image_syspath['dir'].$image_syspath['file']);
+
 //Web path
 $image_path = UserManager::get_user_picture_path_by_id(api_get_user_id(), 'web', false, true);
 $image_dir = $image_path['dir'];
@@ -709,27 +793,33 @@ $image_file = $image_dir.$image;
 $img_attributes = 'src="'.$image_file.'?rand='.time().'" '
     .'alt="'.api_get_person_name($user_data['firstname'], $user_data['lastname']).'" '
     .'style="float:'.($text_dir == 'rtl' ? 'left' : 'right').'; margin-top:0px;padding:5px;" ';
+/*
+if ($image_size['width'] > 300) {
+	//limit display width to 300px
+	$img_attributes .= 'width="300" ';
+}*/
 
 // get the path,width and height from original picture
 $big_image = $image_dir.'big_'.$image;
 
-$big_image_size     = api_getimagesize($big_image);
-$big_image_width    = $big_image_size['width'];
-$big_image_height   = $big_image_size['height'];
-$url_big_image      = $big_image.'?rnd='.time();
+$big_image_size = api_getimagesize($big_image);
+$big_image_width = $big_image_size['width'];
+$big_image_height = $big_image_size['height'];
+$url_big_image = $big_image.'?rnd='.time();
 
 $show_delete_account_button = api_get_setting('platform_unsubscribe_allowed') == 'true' ? true : false;
 
 if (api_get_setting('allow_social_tool') == 'true') {
     echo '<div class="row-fluid">';
-        echo '<div class="span3">';
-        echo SocialManager::show_social_menu('home', null, api_get_user_id(), false, $show_delete_account_button);
-        echo '</div>';
-        echo '<div class="span9">';
-        $form->display();
+    echo '<div class="span3">';
+    echo SocialManager::show_social_menu('home', null, api_get_user_id(), false, $show_delete_account_button);
+    echo '</div>';
+    echo '<div class="span9">';
+    $form->display();
     echo '</div>';
 } else {
     // Style position:absolute has been removed for Opera-compatibility.
+    //echo '<div id="image-message-container" style="float:right;display:inline;position:absolute;padding:3px;width:250px;" >';
     echo '<div id="image-message-container" style="float:right;display:inline;padding:3px;width:230px;" >';
 
     if ($image == 'unknown.jpg') {

+ 75 - 56
main/course_home/vertical_activity.php

@@ -4,66 +4,70 @@
 /**
  *   HOME PAGE FOR EACH COURSE
  *
- *	This page, included in every course's index.php is the home
- *	page. To make administration simple, the teacher edits his
- *	course from the home page. Only the login detects that the
- *	visitor is allowed to activate, deactivate home page links,
- *	access to the teachers tools (statistics, edit forums...).
+ *    This page, included in every course's index.php is the home
+ *    page. To make administration simple, the teacher edits his
+ *    course from the home page. Only the login detects that the
+ *    visitor is allowed to activate, deactivate home page links,
+ *    access to the teachers tools (statistics, edit forums...).
  *
- *	@package chamilo.course_home
+ * @package chamilo.course_home
  */
 
 //	MAIN CODE
-$id = isset($_GET['id']) ? intval($_GET['id']) : null;
-$course_id = api_get_course_int_id();
+$id         = isset($_GET['id']) ? intval($_GET['id']) : null;
+$course_id  = api_get_course_int_id();
 $session_id = api_get_session_id();
 
 if (api_is_allowed_to_edit(null, true)) {
-	// HIDE
-	if (!empty($_GET['hide'])) { // visibility 1 -> 0
-		$sql = "UPDATE $tool_table SET visibility=0 WHERE c_id = $course_id AND id='".$id."'";
-		Database::query($sql);
-		$show_message = Display::return_message(get_lang('ToolIsNowHidden'), 'confirmation');
-	} elseif (!empty($_GET['restore'])) {
-		// visibility 0,2 -> 1
-		// REACTIVATE
-		$sql = "UPDATE $tool_table SET visibility=1  WHERE c_id = $course_id AND id='".$id."'";
-		Database::query($sql);
-		$show_message = Display::return_message(get_lang('ToolIsNowVisible'), 'confirmation');
-	}
+    // HIDE
+    if (!empty($_GET['hide'])) { // visibility 1 -> 0
+        $sql = "UPDATE $tool_table SET visibility=0 WHERE c_id = $course_id AND id='".$id."'";
+        Database::query($sql);
+        $show_message = Display::return_message(get_lang('ToolIsNowHidden'), 'confirmation');
+    } elseif (!empty($_GET['restore'])) {
+        // visibility 0,2 -> 1
+        // REACTIVATE
+        $sql = "UPDATE $tool_table SET visibility=1  WHERE c_id = $course_id AND id='".$id."'";
+        Database::query($sql);
+        $show_message = Display::return_message(get_lang('ToolIsNowVisible'), 'confirmation');
+    }
 }
 
 // Work with data post askable by admin of course
 if (api_is_platform_admin()) {
-	// Show message to confirm that a tool it to be hidden from available tools
-	// visibility 0,1->2
-	if (!empty($_GET['askDelete'])) {
-        $content .='<div id="toolhide">'.get_lang('DelLk').'<br />&nbsp;&nbsp;&nbsp;
+    // Show message to confirm that a tool it to be hidden from available tools
+    // visibility 0,1->2
+    if (!empty($_GET['askDelete'])) {
+        $content .= '<div id="toolhide">'.get_lang('DelLk').'<br />&nbsp;&nbsp;&nbsp;
             <a href="'.api_get_self().'">'.get_lang('No').'</a>&nbsp;|&nbsp;
             <a href="'.api_get_self().'?delete=yes&id='.$id.'">'.get_lang('Yes').'</a>
         </div>';
-	} elseif (isset($_GET['delete']) && $_GET['delete']) {
+    } elseif (isset($_GET['delete']) && $_GET['delete']) {
         /*
         * Process hiding a tools from available tools.
         */
-		//where $id is set?
-		$id = intval($id);
-		Database::query("DELETE FROM $tool_table WHERE c_id = $course_id AND id='$id' AND added_tool=1");
-	}
+        //where $id is set?
+        $id = intval($id);
+        Database::query("DELETE FROM $tool_table WHERE c_id = $course_id AND id='$id' AND added_tool=1");
+    }
 }
 
 //	COURSE ADMIN ONLY VIEW
 
 // Start of tools for CourseAdmins (teachers/tutors)
 if (api_is_allowed_to_edit(null, true) && !api_is_coach()) {
+<<<<<<< HEAD
     $content .=  '<div class="courseadminview" style="border:0px; margin-top: 0px;padding:5px;">
+=======
+    $content .= '<div class="courseadminview" style="border:0px; margin-top: 0px;padding:5px;">
+>>>>>>> master
     <div class="normal-message" id="id_normal_message" style="display:none">';
-        $content .=  '<img src="'.api_get_path(WEB_PATH).'main/inc/lib/javascript/indicator.gif"/>&nbsp;&nbsp;';
-        $content .=  get_lang('PleaseStandBy');
+    $content .= '<img src="'.api_get_path(WEB_PATH).'main/inc/lib/javascript/indicator.gif"/>&nbsp;&nbsp;';
+    $content .= get_lang('PleaseStandBy');
 
-    $content .=  '</div>
+    $content .= '</div>
         <div class="confirmation-message" id="id_confirmation_message" style="display:none"></div></div>';
-    $content .=  '<div id="activity-3col">';
+    $content .= '<div id="activity-3col">';
 
     if (api_get_setting('show_session_data') == 'true' && $session_id > 0) {
         $content .= '<div class="courseadminview-activity-3col"><span class="viewcaption">'.get_lang('SessionData').'</span>
@@ -72,12 +76,12 @@ if (api_is_allowed_to_edit(null, true) && !api_is_coach()) {
     }
 
     $content .= '<div class="courseadminview-activity-3col"><span class="viewcaption">'.get_lang('Authoring').'</span>';
-    $my_list  = CourseHome::get_tools_category(TOOL_AUTHORING);
+    $my_list = CourseHome::get_tools_category(TOOL_AUTHORING);
     $content .= CourseHome::show_tools_category($my_list);
     $content .= '</div>';
 
     $content .= '<div class="courseadminview-activity-3col"><span class="viewcaption">'.get_lang('Interaction').'</span>';
-    $my_list  = CourseHome::get_tools_category(TOOL_INTERACTION);
+    $my_list = CourseHome::get_tools_category(TOOL_INTERACTION);
     $content .= CourseHome::show_tools_category($my_list);
     $content .= '</div>';
 
@@ -87,23 +91,24 @@ if (api_is_allowed_to_edit(null, true) && !api_is_coach()) {
     $content .= '</div>';
 
 } elseif (api_is_coach()) {
-	if (api_get_setting('show_session_data') == 'true' && $session_id > 0) {
+    if (api_get_setting('show_session_data') == 'true' && $session_id > 0) {
         $content .= '<div class="courseadminview-activity-3col"><span class="viewcaption">'.get_lang('SessionData').'</span>
 			<table width="100%">';
-				$content .= CourseHome::show_session_data($session_id);
-             $content .=  '</table></div>';
-	}
+        $content .= CourseHome::show_session_data($session_id);
+        $content .= '</table></div>';
+    }
 
-    $content .=  '<div class="Authoringview">';
-				$my_list = CourseHome::get_tools_category(TOOL_STUDENT_VIEW);
-				$content .= CourseHome::show_tools_category($my_list);
+    $content .= '<div class="Authoringview">';
+    $my_list = CourseHome::get_tools_category(TOOL_STUDENT_VIEW);
+    $content .= CourseHome::show_tools_category($my_list);
     $content .= '</div>';
     //	TOOLS AUTHORING
 
 } else {
-	$my_list = CourseHome::get_tools_category(TOOL_STUDENT_VIEW);
-	if (count($my_list) > 0) {
+    $my_list = CourseHome::get_tools_category(TOOL_STUDENT_VIEW);
+    if (count($my_list) > 0) {
         $content .= '<div class="course-student-view-activity-3col">';
+<<<<<<< HEAD
 		//ordering by get_lang name
 		$order_tool_list = array();
 		foreach($my_list as $key=>$new_tool) {
@@ -116,19 +121,33 @@ if (api_is_allowed_to_edit(null, true) && !api_is_coach()) {
 			$my_temp_tool_array[] = $my_list[$key];
 		}
 		$my_list = $my_temp_tool_array;
+=======
+        //ordering by get_lang name
+        $order_tool_list = array();
+        foreach ($my_list as $key => $new_tool) {
+            $tool_name              = CourseHome::translate_tool_name($new_tool);
+            $order_tool_list [$key] = $tool_name;
+        }
+        natsort($order_tool_list);
+        $my_temp_tool_array = array();
+        foreach ($order_tool_list as $key => $new_tool) {
+            $my_temp_tool_array[] = $my_list[$key];
+        }
+        $my_list = $my_temp_tool_array;
+>>>>>>> master
 
-		$i = 0;
-		foreach($my_list as $new_tool) {
-			if ($i >= 10) {
-				$my_list2[] = $new_tool;
-			} else {
-				$my_list1[] = $new_tool;
-			}
-			$i++;
-		}
-		$content .=CourseHome::show_tools_category($my_list1);
-		$content .=CourseHome::show_tools_category($my_list2);
+        $i = 0;
+        foreach ($my_list as $new_tool) {
+            if ($i >= 10) {
+                $my_list2[] = $new_tool;
+            } else {
+                $my_list1[] = $new_tool;
+            }
+            $i++;
+        }
+        $content .= CourseHome::show_tools_category($my_list1);
+        $content .= CourseHome::show_tools_category($my_list2);
         $content .= '</div>';
-	}
+    }
 }
 $content .= '</div>';

+ 13 - 11
main/coursecopy/classes/CourseArchiver.class.php

@@ -41,11 +41,11 @@ class CourseArchiver
         CourseArchiver::clean_backup_dir();
 
         // Create a temp directory
-        $tmp_dir_name = 'CourseArchiver_' . api_get_unique_id();
-        $backup_dir = api_get_path(SYS_ARCHIVE_PATH) . $tmp_dir_name . '/';
+        $tmp_dir_name = 'CourseArchiver_'.api_get_unique_id();
+        $backup_dir = api_get_path(SYS_ARCHIVE_PATH).$tmp_dir_name . '/';
 
         // All course-information will be stored in course_info.dat
-        $course_info_file = $backup_dir . 'course_info.dat';
+        $course_info_file = $backup_dir.'course_info.dat';
         $zip_dir = api_get_path(SYS_ARCHIVE_PATH);
         $user = api_get_user_info();
         $date = new DateTime(api_get_local_time());
@@ -71,9 +71,8 @@ class CourseArchiver
         if ($res === false) {
             error_log(__FILE__ . ' line ' . __LINE__ . ': ' . (ini_get('track_errors') != false ? $php_errormsg : 'error not recorded because track_errors is off in your php.ini'), 0);
         }
-        
-        
-        // Copy all documents to the temp-dir        
+
+        // Copy all documents to the temp-dir
         if (isset($course->resources[RESOURCE_DOCUMENT]) && is_array($course->resources[RESOURCE_DOCUMENT])) {
             foreach ($course->resources[RESOURCE_DOCUMENT] as $document) {
                 if ($document->file_type == DOCUMENT) {
@@ -102,7 +101,7 @@ class CourseArchiver
         if (isset($course->resources[RESOURCE_EVENT]) && is_array($course->resources[RESOURCE_EVENT])) {
             $doc_dir = dirname($backup_dir . '/upload/calendar/');
             @mkdir($doc_dir, $perm_dirs, true);
-            copyDirTo($course->path . 'upload/calendar/', $doc_dir, false);
+            FileManager::copyDirTo($course->path . 'upload/calendar/', $doc_dir, false);
         }
 
         // Copy Learning path author image.
@@ -182,7 +181,8 @@ class CourseArchiver
      * @param boolean $delete Delete the file after reading the course?
      * @todo Check if the archive is a correct Chamilo-export
      */
-    static function read_course($filename, $delete = false) {
+    static function read_course($filename, $delete = false)
+    {
         CourseArchiver::clean_backup_dir();
         // Create a temp directory
         $tmp_dir_name = 'CourseArchiver_' . uniqid('');
@@ -190,7 +190,8 @@ class CourseArchiver
         mkdir($unzip_dir, api_get_permissions_for_new_directories(), true);
         copy(api_get_path(SYS_ARCHIVE_PATH).$filename, $unzip_dir.'/backup.zip');
         // unzip the archive
-        $zip = new PclZip($unzip_dir . '/backup.zip');
+
+        $zip = new PclZip($unzip_dir.'/backup.zip');
         chdir($unzip_dir);
         $list = $zip->extract(PCLZIP_OPT_TEMP_FILE_ON);
 
@@ -199,17 +200,19 @@ class CourseArchiver
             $errorMessage = $zip->errorInfo(true);
             $app['session']->getFlashBag()->add('warning', $errorMessage);*/
         }
+
         // remove the archive-file
         if ($delete) {
             if (file_exists(api_get_path(SYS_ARCHIVE_PATH).$filename)) {
                 unlink(api_get_path(SYS_ARCHIVE_PATH).$filename);
-        }
+            }
         }
 
         // Read the course
         if (!is_file('course_info.dat')) {
             return new Course();
         }
+
         $contents = file_get_contents('course_info.dat');
         // CourseCopyLearnpath class appeared in Chamilo 1.8.7, it is the former Learnpath class in the "Copy course" tool.
         // For backward comaptibility with archives created on Chamilo 1.8.6.2 or older systems, we have to do the following:
@@ -221,5 +224,4 @@ class CourseArchiver
         $course->backup_path = $unzip_dir;
         return $course;
     }
-
 }

+ 5 - 7
main/coursecopy/classes/Resource.class.php

@@ -78,11 +78,11 @@ class Resource
      */
     function Resource($id, $type)
     {
-        $this->source_id        = $id;
-        $this->type             = $type;
-        $this->destination_id   = -1;
+        $this->source_id = $id;
+        $this->type = $type;
+        $this->destination_id = -1;
         $this->linked_resources = array();
-        $this->item_properties  = array();
+        $this->item_properties = array();
     }
 
     /**
@@ -112,7 +112,6 @@ class Resource
         ) {
             return in_array($resource->get_id(), $this->linked_resources[$resource->get_type()]);
         }
-
         return false;
     }
 
@@ -137,7 +136,7 @@ class Resource
     /**
      * Get the constant which defines the tool of this resource. This is
      * used in the item_properties table.
-     * @param bool $for_item_property_table (optional)    Added by Ivan, 29-AUG-2009: A parameter for resolving differencies between defined TOOL_* constants and hardcoded strings that are stored in the database.
+     * @param bool $for_item_property_table (optional)	Added by Ivan, 29-AUG-2009: A parameter for resolving differencies between defined TOOL_* constants and hardcoded strings that are stored in the database.
      * Example: The constant TOOL_THREAD is defined in the api.lib.php with the value 'thread', but the "Forums" tool records in the field 'tool' in the item property table the hardcoded value 'forum_thread'.
      * @todo once the RESOURCE_* constants are replaced by the globally
      * defined TOOL_* constants, this function will be replaced by get_type()
@@ -165,7 +164,6 @@ class Resource
                 if ($for_item_property_table) {
                     return 'forum_thread'; // Ivan, 29-AUG-2009: A hardcoded value that the "Forums" tool stores in the item property table.
                 }
-
                 return TOOL_THREAD;
             case RESOURCE_FORUMPOST:
                 return TOOL_POST;

+ 3 - 0
main/coursecopy/import_backup.php

@@ -57,6 +57,7 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
     if (isset($_POST['action']) && $_POST['action'] == 'course_select_form') {
         // Partial backup here we recover the documents posted
         $course = CourseSelectForm::get_posted_course();
+
     } else {
         $backupServer = isset($_POST['backup_server']) ? $_POST['backup_server'] : null;
         if ($backupServer == 'server') {
@@ -81,6 +82,7 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
         }
     }
 
+
     if (!$error && $course->has_resources()) {
 
         $cr = new CourseRestorer($course);
@@ -198,6 +200,7 @@ if ((isset($_POST['action']) && $_POST['action'] == 'course_select_form') || (is
     );
 
     $form->addElement('html', '<br /><br />');
+
     $form->addElement('html', get_lang('SameFilename'));
     $form->addElement('html', '<br /><br />');
     $form->addElement(

File diff suppressed because it is too large
+ 182 - 142
main/css/base.css


+ 538 - 0
main/css/digedd/dataTable.css

@@ -0,0 +1,538 @@
+/*
+ *  File:         demo_table.css
+ *  CVS:          $Id$
+ *  Description:  CSS descriptions for DataTables demo pages
+ *  Author:       Allan Jardine
+ *  Created:      Tue May 12 06:47:22 BST 2009
+ *  Modified:     $Date$ by $Author$
+ *  Language:     CSS
+ *  Project:      DataTables
+ *
+ *  Copyright 2009 Allan Jardine. All Rights Reserved.
+ *
+ * ***************************************************************************
+ * DESCRIPTION
+ *
+ * The styles given here are suitable for the demos that are used with the standard DataTables
+ * distribution (see www.datatables.net). You will most likely wish to modify these styles to
+ * meet the layout requirements of your site.
+ *
+ * Common issues:
+ *   'full_numbers' pagination - I use an extra selector on the body tag to ensure that there is
+ *     no conflict between the two pagination types. If you want to use full_numbers pagination
+ *     ensure that you either have "example_alt_pagination" as a body class name, or better yet,
+ *     modify that selector.
+ *   Note that the path used for Images is relative. All images are by default located in
+ *     images/dataTable/ - relative to this CSS file.
+ */
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables features
+ */
+
+.dataTables_wrapper {
+	position: relative;
+	min-height: 302px;
+	clear: both;
+	_height: 302px;
+	zoom: 1; /* Feeling sorry for IE */
+}
+
+.dataTables_processing {
+	position: absolute;
+	top: 50%;
+	left: 50%;
+	width: 250px;
+	height: 30px;
+	margin-left: -125px;
+	margin-top: -15px;
+	padding: 14px 0 2px 0;
+	border: 1px solid #ddd;
+	text-align: center;
+	color: #999;
+	font-size: 14px;
+	background-color: white;
+}
+
+.dataTables_length {
+	width: 40%;
+	float: left;
+}
+
+.dataTables_filter {
+	width: 50%;
+	float: right;
+	text-align: right;
+}
+
+.dataTables_info {
+	width: 60%;
+	float: left;
+}
+
+.dataTables_paginate {
+	width: 44px;
+	* width: 50px;
+	float: right;
+	text-align: right;
+}
+
+/* Pagination nested */
+.paginate_disabled_previous, .paginate_enabled_previous, .paginate_disabled_next, .paginate_enabled_next {
+	height: 19px;
+	width: 19px;
+	margin-left: 3px;
+	float: left;
+}
+
+.paginate_disabled_previous {
+	background-image: url('images/dataTale/back_disabled.jpg');
+}
+
+.paginate_enabled_previous {
+	background-image: url('images/dataTable/back_enabled.jpg');
+}
+
+.paginate_disabled_next {
+	background-image: url('images/dataTable/forward_disabled.jpg');
+}
+
+.paginate_enabled_next {
+	background-image: url('images/dataTable/forward_enabled.jpg');
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables display
+ */
+table.display {
+	margin: 0 auto;
+	clear: both;
+	width: 100%;
+	
+	/* Note Firefox 3.5 and before have a bug with border-collapse
+	 * ( https://bugzilla.mozilla.org/show%5Fbug.cgi?id=155955 ) 
+	 * border-spacing: 0; is one possible option. Conditional-css.com is
+	 * useful for this kind of thing
+	 *
+	 * Further note IE 6/7 has problems when calculating widths with border width.
+	 * It subtracts one px relative to the other browsers from the first column, and
+	 * adds one to the end...
+	 *
+	 * If you want that effect I'd suggest setting a border-top/left on th/td's and 
+	 * then filling in the gaps with other borders.
+	 */
+}
+
+table.display thead th {
+	padding: 3px 18px 3px 10px;
+	border-bottom: 1px solid black;
+	font-weight: bold;
+	cursor: pointer;
+	* cursor: hand;
+}
+
+table.display tfoot th {
+	padding: 3px 18px 3px 10px;
+	border-top: 1px solid black;
+	font-weight: bold;
+}
+
+table.display tr.heading2 td {
+	border-bottom: 1px solid #aaa;
+}
+
+table.display td {
+	padding: 3px 10px;
+}
+
+table.display td.center {
+	text-align: center;
+}
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables sorting
+ */
+
+.sorting_asc {
+	background: url('images/dataTable/sort_asc.png') no-repeat center right;
+}
+
+.sorting_desc {
+	background: url('images/dataTable/sort_desc.png') no-repeat center right;
+}
+
+.sorting {
+	background: url('images/dataTable/sort_both.png') no-repeat center right;
+}
+
+.sorting_asc_disabled {
+	background: url('images/dataTable/sort_asc_disabled.png') no-repeat center right;
+}
+
+.sorting_desc_disabled {
+	background: url('images/dataTable/sort_desc_disabled.png') no-repeat center right;
+}
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * DataTables row classes
+ */
+table.display tr.odd.gradeA {
+	background-color: #ddffdd;
+}
+
+table.display tr.even.gradeA {
+	background-color: #eeffee;
+}
+
+table.display tr.odd.gradeC {
+	background-color: #ddddff;
+}
+
+table.display tr.even.gradeC {
+	background-color: #eeeeff;
+}
+
+table.display tr.odd.gradeX {
+	background-color: #ffdddd;
+}
+
+table.display tr.even.gradeX {
+	background-color: #ffeeee;
+}
+
+table.display tr.odd.gradeU {
+	background-color: #ddd;
+}
+
+table.display tr.even.gradeU {
+	background-color: #eee;
+}
+
+
+tr.odd {
+	background-color: #E2E4FF;
+}
+
+tr.even {
+	background-color: white;
+}
+
+
+
+
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ * Misc
+ */
+.dataTables_scroll {
+	clear: both;
+}
+
+.dataTables_scrollBody {
+	*margin-top: -1px;
+}
+
+.top, .bottom {
+	padding: 15px;
+	background-color: #F5F5F5;
+	border: 1px solid #CCCCCC;
+}
+
+.top .dataTables_info {
+	float: none;
+}
+
+.clear {
+	clear: both;
+}
+
+.dataTables_empty {
+	text-align: center;
+}
+
+tfoot input {
+	margin: 0.5em 0;
+	width: 100%;
+	color: #444;
+}
+
+tfoot input.search_init {
+	color: #999;
+}
+
+td.group {
+	background-color: #d1cfd0;
+	border-bottom: 2px solid #A19B9E;
+	border-top: 2px solid #A19B9E;
+}
+
+td.details {
+	background-color: #d1cfd0;
+	border: 2px solid #A19B9E;
+}
+
+
+.example_alt_pagination div.dataTables_info {
+	width: 40%;
+}
+
+.paging_full_numbers {
+	width: 400px;
+	height: 22px;
+	line-height: 22px;
+}
+
+.paging_full_numbers span.paginate_button,
+ 	.paging_full_numbers span.paginate_active {
+	border: 1px solid #aaa;
+	-webkit-border-radius: 5px;
+	-moz-border-radius: 5px;
+	padding: 2px 5px;
+	margin: 0 3px;
+	cursor: pointer;
+	*cursor: hand;
+}
+
+.paging_full_numbers span.paginate_button {
+	background-color: #ddd;
+}
+
+.paging_full_numbers span.paginate_button:hover {
+	background-color: #ccc;
+}
+
+.paging_full_numbers span.paginate_active {
+	background-color: #99B3FF;
+}
+
+table.display tr.even.row_selected td {
+	background-color: #B0BED9;
+}
+
+table.display tr.odd.row_selected td {
+	background-color: #9FAFD1;
+}
+
+
+/*
+ * Sorting classes for columns
+ */
+/* For the standard odd/even */
+tr.odd td.sorting_1 {
+	background-color: #D3D6FF;
+}
+
+tr.odd td.sorting_2 {
+	background-color: #DADCFF;
+}
+
+tr.odd td.sorting_3 {
+	background-color: #E0E2FF;
+}
+
+tr.even td.sorting_1 {
+	background-color: #EAEBFF;
+}
+
+tr.even td.sorting_2 {
+	background-color: #F2F3FF;
+}
+
+tr.even td.sorting_3 {
+	background-color: #F9F9FF;
+}
+
+
+/* For the Conditional-CSS grading rows */
+/*
+ 	Colour calculations (based off the main row colours)
+  Level 1:
+		dd > c4
+		ee > d5
+	Level 2:
+	  dd > d1
+	  ee > e2
+ */
+tr.odd.gradeA td.sorting_1 {
+	background-color: #c4ffc4;
+}
+
+tr.odd.gradeA td.sorting_2 {
+	background-color: #d1ffd1;
+}
+
+tr.odd.gradeA td.sorting_3 {
+	background-color: #d1ffd1;
+}
+
+tr.even.gradeA td.sorting_1 {
+	background-color: #d5ffd5;
+}
+
+tr.even.gradeA td.sorting_2 {
+	background-color: #e2ffe2;
+}
+
+tr.even.gradeA td.sorting_3 {
+	background-color: #e2ffe2;
+}
+
+tr.odd.gradeC td.sorting_1 {
+	background-color: #c4c4ff;
+}
+
+tr.odd.gradeC td.sorting_2 {
+	background-color: #d1d1ff;
+}
+
+tr.odd.gradeC td.sorting_3 {
+	background-color: #d1d1ff;
+}
+
+tr.even.gradeC td.sorting_1 {
+	background-color: #d5d5ff;
+}
+
+tr.even.gradeC td.sorting_2 {
+	background-color: #e2e2ff;
+}
+
+tr.even.gradeC td.sorting_3 {
+	background-color: #e2e2ff;
+}
+
+tr.odd.gradeX td.sorting_1 {
+	background-color: #ffc4c4;
+}
+
+tr.odd.gradeX td.sorting_2 {
+	background-color: #ffd1d1;
+}
+
+tr.odd.gradeX td.sorting_3 {
+	background-color: #ffd1d1;
+}
+
+tr.even.gradeX td.sorting_1 {
+	background-color: #ffd5d5;
+}
+
+tr.even.gradeX td.sorting_2 {
+	background-color: #ffe2e2;
+}
+
+tr.even.gradeX td.sorting_3 {
+	background-color: #ffe2e2;
+}
+
+tr.odd.gradeU td.sorting_1 {
+	background-color: #c4c4c4;
+}
+
+tr.odd.gradeU td.sorting_2 {
+	background-color: #d1d1d1;
+}
+
+tr.odd.gradeU td.sorting_3 {
+	background-color: #d1d1d1;
+}
+
+tr.even.gradeU td.sorting_1 {
+	background-color: #d5d5d5;
+}
+
+tr.even.gradeU td.sorting_2 {
+	background-color: #e2e2e2;
+}
+
+tr.even.gradeU td.sorting_3 {
+	background-color: #e2e2e2;
+}
+
+
+/*
+ * Row highlighting example
+ */
+.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {
+	background-color: #ECFFB3;
+}
+
+.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {
+	background-color: #E6FF99;
+}
+
+.ex_highlight_row #example tr.even:hover {
+	background-color: #ECFFB3;
+}
+
+.ex_highlight_row #example tr.even:hover td.sorting_1 {
+	background-color: #DDFF75;
+}
+
+.ex_highlight_row #example tr.even:hover td.sorting_2 {
+	background-color: #E7FF9E;
+}
+
+.ex_highlight_row #example tr.even:hover td.sorting_3 {
+	background-color: #E2FF89;
+}
+
+.ex_highlight_row #example tr.odd:hover {
+	background-color: #E6FF99;
+}
+
+.ex_highlight_row #example tr.odd:hover td.sorting_1 {
+	background-color: #D6FF5C;
+}
+
+.ex_highlight_row #example tr.odd:hover td.sorting_2 {
+	background-color: #E0FF84;
+}
+
+.ex_highlight_row #example tr.odd:hover td.sorting_3 {
+	background-color: #DBFF70;
+}
+
+
+/*
+ * KeyTable
+ */
+table.KeyTable td {
+	border: 3px solid transparent;
+}
+
+table.KeyTable td.focus {
+	border: 3px solid #3366FF;
+}
+
+table.display tr.gradeA {
+	background-color: #eeffee;
+}
+
+table.display tr.gradeC {
+	background-color: #ddddff;
+}
+
+table.display tr.gradeX {
+	background-color: #ffdddd;
+}
+
+table.display tr.gradeU {
+	background-color: #ddd;
+}
+
+div.box {
+	height: 100px;
+	padding: 10px;
+	overflow: auto;
+	border: 1px solid #8080FF;
+	background-color: #E5E5FF;
+}

+ 191 - 0
main/css/digedd/default.css

@@ -0,0 +1,191 @@
+/*****************************************************
+ *  MAIN  - CHAMILO CSS
+ *****************************************************/
+
+/* Adding default style for the chamilo_X themes */
+@import url('../base_chamilo.css');
+
+/* the following for regular <a> elements */
+a {
+    text-decoration: none;
+    color :#3757f7
+}
+a:visited {
+    text-decoration: none;    
+}
+a:hover {
+    text-decoration: none;
+    color: #f3840d;
+}
+a:active {
+    text-decoration: none;
+    color : #3757f7;
+}
+
+.subnav .navbar-inner {
+    background-color: #00AAE3; /* Old browsers */
+    background-repeat: repeat-x; /* Repeat the gradient */
+    background-image: -moz-linear-gradient(top, #028DC2 0%, #00AAE3 100%); /* FF3.6+ */  
+    background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#028DC2), color-stop(100%,#00AAE3)); /* Chrome,Safari4+ */
+    background-image: -webkit-linear-gradient(top, #028DC2 0%, #00AAE3 100%); /* Chrome 10+,Safari 5.1+ */
+    background-image: -ms-linear-gradient(top, #028DC2 0%,#00AAE3 100%); /* IE10+ */
+    background-image: -o-linear-gradient(top, #028DC2 0%,#00AAE3 100%); /* Opera 11.10+ */
+    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#028DC2', endColorstr='#00AAE3',GradientType=0 ); /* IE6-9 */
+    background-image: linear-gradient(top, #028DC2 0%,#00AAE3 100%); /* W3C */    
+}
+
+.subnav .nav > li > a {
+    border-left: 1px solid #0EA0D4;
+    border-right: 1px solid #0EA0D4;
+    color: white;
+}
+
+.subnav .nav > #current > a,
+.subnav .nav > #current > a:hover {  
+    color: #fff;
+    background-color: #028DC2;
+    border-right-color: #028DC2;  
+}
+
+.subnav li a {
+    color:#fff;
+}
+
+/* Green hover */
+.subnav .navbar-inner li a:hover {
+    background: none repeat scroll 0 0 #8ECB50;
+    color: #fff;
+}
+
+/*****************************************************
+ *  FOOTER STYLES                                    *
+ *****************************************************/
+footer {    
+    background-color: #037fb2;
+    background-image: url(images/bg-footer.gif);
+    background-repeat:repeat-x;    
+    color:#ffffff;    
+}
+
+/*****************************************************
+ *  DISPLAY MESSAGES	                             *
+ *****************************************************/
+.normal-message {
+    color: #00407F;
+    border: 1px solid #CDE6F5;
+    background: url("images/background_message.png") repeat-x scroll 0 0 #EAF8FE;
+}
+.warning-message {
+    border: 1px solid #FFB30F;
+    color: #000;
+	background: url("images/background_message.png") repeat-x scroll 0 0 #FFEFA7;
+}
+.confirmation-message {
+	border: 1px solid #1F8323;
+    color:#1F8323;
+	background: url("images/background_message.png") repeat-x scroll 0 0 #CAF0C7;
+}
+.error-message {
+    border: 1px solid #FF0000;
+    color: #440000;
+	background: url("images/background_message.png") repeat-x scroll 0 0 #FFD1D1;
+}
+
+.social-menu-title {
+	background-color:#00AAE3;
+}
+
+#social-content-online {
+    background-color:#00AAE3;
+}
+		
+.admin_section li {
+    background-image:url(images/bullet.gif);
+}
+
+.system_announcements {
+    background: transparent url('images/systemenouvelles.jpg') no-repeat top  left;
+}
+
+.topa {
+    background:transparent url('images/logoa4.gif') no-repeat;
+}
+.topb {
+    background:transparent url('images/logob4.gif') no-repeat;
+}
+
+#bottomhellomindfactory {    
+    background:transparent url('images/textologo.jpg') no-repeat;
+}
+
+/*including "login" image*/
+button.login {
+    background-image:url(images/bg-button.gif);
+}
+
+button.login:hover {
+}
+
+/*including "save" image*/
+button.save {
+    background-image:url(images/button_accept.gif);
+}
+/*including "add" image*/
+button.add {
+    background-image:url(images/button_add.gif);
+}
+/*including "cancel" image*/
+button.cancel {
+    background-image:url(images/button_delete.gif);
+}
+/*including "search" image*/
+button.search {
+    background-image:url(images/bg-button.gif);
+}
+/*including "plus" image*/
+button.plus {
+    background-image:url(images/button_plus.gif);
+}
+/*including "minus" image*/
+button.minus {
+    background-image:url(images/button_minus.gif);
+}
+/*including "next" image*/
+button.next {
+    background-image:url(images/button_next.gif) !important;
+}
+/*including "back" image*/
+button.back {
+    background-image:url(images/button_back.gif);
+}
+/*including "refresh" image*/
+button.refresh {
+    background-image:url(images/button_refresh.gif);
+}
+/*including "upload" image*/
+button.upload {
+    background-image:url(images/button_upload.gif);
+}
+
+button.arrowr, input.arrowr {
+	background-image:url(images/2rightarrow.gif);	
+}
+button.arrowl, input.arrowl {
+    background-image:url(images/2leftarrow.gif);	
+}
+.refresh {
+    background-image:url(images/refresh.png);
+}
+
+.portal {
+    background-image:url(images/portal.png);
+}
+#logo img {
+    max-width: 180%;
+}
+.exercise_progress_bars_cat {
+    width: 220px !important;
+}
+.exercise_progress_bars_cat_items {
+    width: 710px !important;
+}

+ 983 - 0
main/css/digedd/frames.css

@@ -0,0 +1,983 @@
+body {
+	font-family: verdana, arial, helvetica, sans-serif;
+	font-size: 12px;
+	color: #000;
+	margin: 10px;
+	padding: 0;
+	background-color: #fff;
+}
+img {
+	border: none;
+}
+#outerframe {
+	position: relative;  /* do not remove, fixes a bug in IE */
+	border: 1px solid #fff;
+	background-color: #fff;
+}
+/* Hides from IE5-mac \*/
+* html #outerframe {
+	height: 1%;
+}
+/* End hide from IE5-mac */
+
+/***************************************************** 
+ *  HEADER STYLES                                    *
+ *****************************************************/
+#header {
+	width: 100%;
+	padding: 0;
+	margin: 0;
+}
+/* Header 1: Containing title, portal and organization */
+#header1 {
+	font-size: 12px;
+	padding: 4px;
+	background-color: #264269;
+	color: #fff;
+	border-bottom: 1px solid white;
+}
+#header1 a {
+	color: #ffffff;
+	text-decoration: none;
+}
+#header1 a:hover {
+	text-decoration: underline;
+}
+#sitename {
+	margin: 0;
+	font-weight: bold;
+}
+#institution {
+	float: left;
+	font-weight: bold;
+}
+#my_courses {
+	float: right;
+	font-weight: bold;
+}
+#logout {
+	float: right;
+	width:20%;
+	text-align:right;
+}
+
+/* The tool shortcuts */
+#toolshortcuts {
+	text-align: right;
+}
+/***************************************************** 
+ *  FOOTER STYLES                                    *
+ *****************************************************/
+#footer {
+	padding: 8px;
+	border-top: 1px solid #4171B5;
+	background-color: #E5EDF9;
+	font-size: 12px;
+}
+#footer .copyright {
+	float: right;
+}
+/***************************************************** 
+ *  MAIN STYLES                                      *
+ *****************************************************/
+#main {
+	position: relative; /* to avoid the IE peekabo bug*/
+	margin: 0px auto;
+	margin-top: 10px;
+	width: 98%;
+	padding: 0px 10px 10px 10px;
+	background-color: #fff;
+	min-height: 320px;
+}
+/* for content section in main index.php file */
+.maincontent {
+	float: left;
+	width: 78%;
+	padding: 4px;
+	background-color: #fff;
+}
+/* "menu" classes for menu/navigation section in main index.php  */
+.menu {
+	float: right;
+	width: 20%;
+	padding: 0 0 6px 0;
+	background-color: #E5EDF9;
+	border: 1px solid #4171B5;
+}
+.menucaption {
+	font-size: 12px;
+	font-weight: bold;
+	padding-left: 12px;
+}
+.menusection {
+	width: auto;
+	margin: 24px 6px 0 6px;
+	padding-left: 10px;
+	border: 1px solid #4171B5;
+}
+.menusectioncaption {
+	position: relative;
+	top: -9px;
+	background-color: #E5EDF9;
+	font-size: 12px;
+	padding: 0 8px 0 4px;
+}
+.menulist {
+	list-style: none;
+	margin: 0 0 12px 0;
+	padding: 0;
+}
+#lang_form {
+	text-align: left;
+	font-size: 12px;
+	margin: 2px 0 10px 0;
+	padding: 2px;
+}
+#lang_form input, #lang_form select {
+	font-size: 12px;
+}
+#loginform label {
+	font-size: 12px;
+	margin: 4px 6px;
+}
+#loginform input {
+	display: block;
+	font-size: 13px;
+	margin: 4px 6px;
+}
+#login_fail {
+	margin: 0 6px 6px 6px;
+	padding: 4px;
+	border: 1px solid #f00;
+	background-color: #fff;
+	font-size: 12px;
+	color: #f00;
+}
+/*** layout divs for course and tool pages (being tested in some pages) ****/  
+#contentfloatholder {/* also makes the right "sliding" tab  */
+	/*background: url(../pics/sidebar-r.gif) repeat-y 100% 0;
+background: url(../pics/bg_fountain.jpg) no-repeat 100% 0; */
+float: left;
+	width: 100%;
+	position: relative;
+}
+#contentfloatholder:after {
+	/* this is for NN6 to clear floats */
+content: ".";
+	display: block;
+	height: 0px;
+	clear: both;
+	visibility: hidden;
+}
+#centerwrap {
+	float: left;
+	width: 100%;
+	margin-right: -95%;/* this needs to be less than 100% for Moz/Mac which thinks 
+         it's empty otherwise. The difference is made up by putting a 
+         negative left margin on the left float:
+	   Note IE/Mac doesn't like this method ~ it wants the 100% so it can 
+	   be fed in using IE only CSS below becasue IE/Win also works with the 100% method.  
+	*/
+}
+#center {
+	margin: 0 0 0 180px;
+	padding: 10px 0 40px 0;
+	min-height: 300px;
+}
+#left {
+	float: left;
+	width: 180px;
+	padding: 20px 0 0 0;
+	margin-left: -5%; /* the difference to make the left colum appear flush left */
+}
+/* --- left navigation box menu as a definition list  --- */
+#leftnavbox {
+	margin: 0;
+	padding: 0;
+	float:left;
+}
+#leftnavbox dl {
+	width: 160px;
+	margin: 12px auto 4px auto;
+	padding: 0 0 10px 0;
+	background: transparent;
+	font-size: 12px;
+	text-align: center;
+}
+#leftnavbox dt {
+	margin: 0;
+	padding: 1px 2px;
+	font-weight: bold;
+	font-size: 12px;
+	text-align: center;
+	color: #000;
+	border-bottom: 1px solid #fff;
+	background: transparent;
+}
+#leftnavbox dd {
+	margin: 0;
+	padding: 0;
+	color: #009;
+	text-align: left;
+	border-bottom:1px solid #fff;
+	background: #ccf;
+}
+#leftnavlist a, #leftnavlist a:link {
+	display: block;
+	color: #fff;
+	text-decoration: none;
+	padding: 2px 5px 2px 10px;
+	background: #4171B5;
+	width:140px;
+	border: 1px solid #009;
+}
+#leftnavlist a:visited {
+	color:#eee;
+	text-decoration: none;
+	display: block;
+	padding: 2px 5px 2px 10px;
+	background: #4171B5;
+	color: #eee;
+	width:140px;
+}
+#leftnavlist a:hover {
+	background: #fff;
+	color:#4171B5;
+	display: block;
+}
+/* --- end of left side definition list menu section  --- */ 
+
+
+ 
+/* various sections in course-home.php file  */
+#toolremove {
+	width: 40%;
+	color: #f00;
+	font-weight: bold;
+	margin: 10px auto;
+	padding: 10px;
+	border: 2px solid #f00;
+}
+#courseintro {
+	clear: both;
+	width: 80%;
+	margin: 10px auto;
+	padding: 10px;
+	border-bottom: 1px solid #4171B5;
+}
+#courseintro_icons {
+	clear: both;
+	width: 80%;
+	margin: 10px auto;
+}
+.everybodyview {
+	position: relative; /* to avoid the IE peekabo bug ?*/
+	width: 80%;
+	margin: 10px auto;
+	padding: 10px;
+}
+.courseadminview, .platformadminview {
+	position: relative;
+	width: 80%;
+	margin: 25px auto 10px;
+	padding: 10px;
+	border: 1px solid #4171B5;
+}
+.viewcaption {
+	position: relative;
+	top: -20px;
+	font-size: 12px;
+	font-weight: bold;
+	color: #4171B5;
+	background-color: #fff;
+	padding: 0 4px;
+}
+/***********************************/
+
+/* ===================================================
+					AGENDA STYLES
+===================================================*/
+
+/* ---------------------------------------------------
+	check if these are still used or not
+-----------------------------------------------------*/
+#agenda {
+	width: 100%;
+	margin: 0 auto;
+	border: 1px solid #4171B5;
+	border-collapse: collapse;
+}
+.agenda_month_divider {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #fff;
+	text-align: center;
+}
+#agenda #title a {
+	color: #fff;
+}
+#agenda .agendaitem {
+	font-size: 12px;
+}
+#smallcalendar #title {
+	background-color: #4171B5;
+	font-weight: bold;
+	padding: 2px;
+	color: #fff;
+	text-align: center;
+	font-size: 11px;
+}
+#smallcalendar #title a {
+	color: #fff;
+}
+#agenda_select {
+	list-style: none;
+	border: 0px solid green;
+	margin: 30px 0 0 0;
+	padding: 0 0 0 10px;
+}
+/* ---------------------------------------------------
+	styles for the agenda (day, week, month view)
+-----------------------------------------------------*/
+#agenda_list {
+	width: 100%;
+	margin: 0 auto;
+	border: 1px solid #fff;
+	border-collapse: collapse;
+}
+/*The caption of the calendar (displays the month and the << and >> links*/ 
+#agenda_list #title {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	text-align: center;
+	border: 1px solid #264269;
+}
+#agenda_list #title a:link, #agenda_list #title a:visited {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	text-align: center;
+}
+#agenda_list #title a:hover {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #ff0000;
+	text-align: left;
+	padding: 2px 10px;
+	text-align: center;
+}
+/* The cells with the name of the days of the weeks (mon->sun)*/
+#agenda_list .weekdays {
+	background-color: #D3DFF1;
+	text-align: center;
+	font-weight: bold;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+}
+/* The cells for the days (1->31) */ 
+#agenda_list .days_week {
+	height: 40px;
+	width: 12%;
+	text-align: left;
+	vertical-align: top;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+	background-color: #f5f5f5;
+}
+#agenda_list .days_weekend {
+	height: 40px;
+	width: 12%;
+	text-align: left;
+	vertical-align: top;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+	background-color: #e6e6e6;
+}
+#agenda_list .days_today {
+	height: 40px;
+	width: 12%;
+	text-align: left;
+	vertical-align: top;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+	background-color: #FFCA8D;
+	color: #CC3300;
+	font-weight: bold;
+}
+/* text in the cells: display of agenda items (visible)*/
+#agenda_list .data {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: bold;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .datanotbold {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .text {
+	background-color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+/*text in the cells: display of agenda items (invisible)*/   
+#agenda_list .data_hidden {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: bold;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+	color: #999999;
+}
+#agenda_list .datanotbold_hidden {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+	color: #999999;
+}
+#agenda_list .text_hidden {
+	background-color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+	color: #999999;
+}
+/*text in the cells: display of agenda items (highlighted)*/    
+#agenda_list .datanow {
+	background-color: #FFCC00;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: bold;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .datanotboldnow {
+	background-color: #FFCC00;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .textnow {
+	background-color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+/* ---------------------------------------------------
+	styles for the mini agenda
+-----------------------------------------------------*/ 
+#smallcalendar {
+	width: 100%;
+	margin: 0 auto;
+	border: 1px solid #fff;
+	border-collapse: collapse;
+}
+#smallcalendar .weekdays {
+	background-color: #D3DFF1;
+	text-align: center;
+	font-size: 11px;
+	font-weight: bold;
+	border: 1px solid #fff;
+	border-collapse: collapse;
+}
+#smallcalendar .days_week {
+	background-color: #f5f5f5;
+	text-align: center;
+	font-size: 11px;
+	border-collapse: collapse;
+}
+#smallcalendar .days_weekend {
+	background-color: #e6e6e6;
+	text-align: center;
+	font-size: 11px;
+	border: 1px solid #fff;
+	border-collapse: collapse;
+}
+#smallcalendar .days_today {
+	width: 12%;
+	text-align: center;
+	font-size: 11px;
+	border: 1px solid #FA8500;
+	border-collapse: collapse;
+	background-color: #FFCA8D;
+}
+/* ---------------------------------------------------
+	styles for the personal agenda
+-----------------------------------------------------*/
+.personal_agenda {
+	color: #008000;
+}
+.personal_agenda a:link, .personal_agenda a:visited {
+	color: #008000;
+}
+a.personal_agenda:link, a.personal_agenda:visited {
+	color: #008000;
+}
+.personal_agenda a:hover, .personal_agenda a:hover {
+	color: #666666;
+}
+a.personal_agenda:hover, a.personal_agenda:hover {
+	color: #666666;
+}
+/* normal and erro message-box */
+.normal-message, .error-message {
+	position: relative;
+	margin: 10px auto;
+	margin-left: -250px;
+	width: 500px;
+	left: 50%;
+	right: 50%;
+	border-width: 1px;
+	border-style: solid;
+	padding: 5px;
+}
+.normal-message {
+	border: 1px solid #FF8001;
+	color: #000;
+	background-color: #FDC77E;
+}
+.error-message {
+	border: 1px solid #3F70AC;
+	color: #000;
+	background-color: #FDC273;
+}
+#message {
+	margin: 0 auto;
+	text-align: center;
+}
+#message select {
+	margin: 10px 0;
+	width: 220px;
+}
+#message textarea {
+	margin: 10px 0;
+}
+#message td {
+	padding: 4px;
+}
+/* styles from the document.php file */
+.comment {
+	margin-left: 30px;
+}
+.invisible {
+	color: #999;
+}
+.invisible a:link, .invisible a:visited {
+	color: #999;
+}
+a.invisible:link, a.invisible:visited {
+	color: #999;
+}
+/* styles from the upload.php file */
+dl.upload_option {
+	margin: 1em 0;
+	padding: 0;
+}
+.upload_option dt {
+	font-weight:bold;
+	margin:0;
+}
+.upload_option dd {
+	margin:0;
+}
+/* styles from dropbox.php file */
+.dropbox_detail {
+	font-size: small
+}
+.dropbox_date {
+	font-style: italic
+}
+.dropbox_person {
+	font-weight: bold
+}
+.dropbox_listTitle {
+	color: #000000;
+}
+.dropbox_feedback {
+	font-size: x-small;
+	height: 50px;
+	width: 200px;
+	overflow: auto
+}
+.dropbox_feedbacks {
+	height: 250px;
+	width: 100%;
+	overflow: auto
+}
+/* styles for chat / conference tools */
+#chat_entermessage {
+	background-color: #D6E5FA;
+	border-top: 1px solid #4171B5;
+	padding: 5px;
+	margin: 0;
+}
+/* styles for general formatting */
+.clear {
+	clear: both;
+	line-height: 0;
+	height: 0;
+}
+p, blockquote, ol, ul {
+	font-size: 12px;
+}
+h1 {
+	font-size: 21px;
+}
+h2 {
+	font-size: 18px;
+}
+h3 {
+	font-size: 15px;
+	margin-top:0px;
+	padding-top:0px;
+}
+h4 {
+	font-size: 12px;
+}
+h5, h6 {
+	font-family: verdana, arial, helvetica, sans-serif;
+}
+/* the following for regular <a> elements */
+a:link {
+	text-decoration: none;
+	font-weight : bold;
+	color : #4171b5;
+}
+a:visited {
+	text-decoration: none;
+	font-weight : bold;
+	color : #4171b5;
+}
+a:hover {
+	text-decoration: none;
+	color: red;
+	font-weight: bold
+}
+a:active {
+	text-decoration: none;
+	font-weight : bold;
+	color : #f00;
+}
+input.link_alike {
+	background-color: #FFFFFF;
+	border-width: 0px;
+	color: #4171b5;
+	font-weight: bold;
+	text-align: left;
+	padding: 0px;
+	margin: 0px;
+}
+input.link_alike:hover {
+	background-color: #FFFFFF;
+	border-width: 0px;
+	color: #FF0000;
+	font-weight: bold;
+	text-align: left;
+	padding: 0px;
+	margin: 0px;
+}
+/* the following for the greyed out elements */
+a.nobold:link, a.nobold:visited, a.nobold:active {
+	font-weight: normal;
+	color: #999;
+	margin: 0 0 0 25px;
+}
+a.nobold:hover {
+	font-weight: normal;
+	color: #999;
+	text-decoration: underline;
+	margin: 0 0 0 25px;
+}
+.note {
+	margin: 6px;
+	font-size: 12px;
+	line-height: 14px;
+	font-family: verdana, arial, helvetica, sans-serif;
+	background-color: #FFF089;
+	color: #4171B5;
+	border: 1px solid #4171B5;
+	padding: 4px;
+}
+.alternativeBgLight {
+	background-color: #f5f5f5;
+	border: 1px solid #4171B5;
+	border-collapse: collapse;
+}
+.alternativeBgDark {
+	background-color: #ccf;
+	border: 1px solid #4171B5;
+	border-collapse: collapse;
+}
+.myagendatoday {
+	background-color: #FFCA8D;
+	border-collapse: collapse;
+	font-family: verdana, arial, helvetica, sans-serif;
+	color: #CC3300;
+	font-weight: bold;
+}
+/* Form elements - some general styling*/
+select, textarea {
+	color : #000;
+	border: 1px solid #000;
+}
+input.checkbox {
+	border-width: 0;
+}
+input.mainoption {
+	font-weight : bold;
+}   /* Main submit button      */
+input.liteoption {
+	font-weight : normal;
+} /* None-bold submit button */
+select, input[type=checkbox], input[type=radio], input[type=button], input[type=submit] {
+	cursor:	pointer;
+	font-size: 12px;
+}
+input[text] {
+	font-size: 12px;
+}
+/************************************************************
+  styles below here are not necessarily used in the current
+	release and the CVS files, they are from earlier versions,
+	and have been left untouched for anyone needing them in
+	their own platform ...
+*************************************************************/
+.topBanner a:link, .topBanner a:active, .topBanner a:visited {
+	text-decoration:none;
+	color:white;
+}
+.topBanner table {
+	text-decoration:none;
+}
+.topBanner a:hover {
+	text-decoration:underline;
+}
+.topBanner td {
+	border-top: solid White 1px;
+}
+.alternativeBgLight {
+	background-color: #f5f5f5;
+}
+.alternativeBgDark {
+	background-color: #e6e6e6
+}
+.forms {
+	letter-spacing: normal;
+	text-align: justify;
+	text-indent: 3pt;
+	word-spacing: normal;
+	padding: 2px 5px;
+}
+.formsTips {
+	text-align: justify;
+	text-indent: 15pt;
+	word-spacing: normal;
+}
+/*
+input.forms	{ letter-spacing: normal; text-align: justify; text-indent: 3pt;	word-spacing: normal;
+padding-top: 0px;	padding-right: 0px;	padding-bottom: 0px;	padding-left: 0px;}
+*/
+.warn {
+	border: thin double Silver;
+	margin-left: 15px;
+	margin-right: 15px;
+	font-family: serif;
+	color: Red;
+	padding-left: 25px;
+}
+.small {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px
+}
+.xsmall {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px
+}
+.xxsmall {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 9px
+}
+/***************************************************** 
+ *  DATA TABLE STYLES                                *
+ *****************************************************/
+.cell_header {
+	background-color: #EEEEFF;
+	font-weight:bold;
+	text-align:left;
+	padding-left:5px;
+}   /* header cell in data table in tools */
+.data_table {
+	border-collapse: collapse;
+	width: 100%;
+	padding: 5px;
+}
+.data_table th {
+	padding-right: 20px;
+	border: 1px solid gray;
+	background-color: #E5EDF9;
+}
+.data_table tr.row_odd {
+	background-color: #fafafa;
+}
+.data_table tr.row_odd:hover, .data_table tr.row_even:hover {
+	background-color: #f0f0f0;
+}
+.data_table tr.row_even {
+	background-color: #fff;
+}
+.data_table td {
+	padding: 5px;
+	vertical-align: top;
+	border-bottom: 1px solid #b0b0b0;
+	border-right: 1px dotted #e1e1e1;
+	border-left: 1px dotted #e1e1e1;
+}
+/* admin page tool list definitions */
+.tool_list dt {
+	font-weight: bold;
+}
+.tool_list dd {
+	margin: 0;
+	padding: 4px 0 0 10px;
+}
+/* divs for category list / platform news on home page */
+.home_cats {
+	width: 45%;
+	float: left;
+	margin: 0;
+	padding: 0px;
+	padding-top: 8px;
+	background: #fff;
+}
+.home_news {
+	width: 45%;
+	float: right;
+	margin: 0;
+	padding: 0px;
+	padding-top: 8px;
+	background: #fff;
+}
+label.left {
+	float: left;
+	width: 15em;
+	margin: 0 0 0.5em 0;
+}
+form br {
+	clear: both;
+}
+/* Fix for alignment problem in IE-Win browsers  */
+/*  Hide from IE5-mac. Only IE-win sees this. \*/
+* html .label {
+	margin-right: 10px;
+}
+* html .data {
+	height: 1%;
+	margin-left: 0;
+}
+/* End hide from IE5/mac */
+
+.radio, .checkbox {
+	margin: 0;
+	padding: 0;
+	border: none;
+	background-color: transparent;
+}
+.required {
+	color: #f00;
+	font-weight: bold;
+}
+/* Admin section */
+div.admin_section {
+	width: 40%;
+	float: left;
+	padding: 5px;
+	margin: 10px 20px;
+}
+div.admin_section h4 {
+	margin: 0;
+	border-bottom: 1px solid gray;
+	width: 100%;
+}
+.user_course_category {
+	background-color: #efefef;
+	border: 1px solid #666;
+	font-weight: bold;
+	color: #666;
+	list-style-type: none;
+	margin: 5px;
+	padding: 5px;
+}
+/* Styles for the Dokeos Config Settings of the platform admin section*/
+.sectiontitle {
+	background-color: #EFEFEF;
+	border: 1px solid #cccccc;
+	font-weight: bold;
+	color: #666666;
+	list-style-type: none;
+	margin: 5px;
+	padding: 5px;
+	font-size: 11px;
+}
+.sectioncomment {
+	color: #000000;
+	margin: 5px;
+	padding: 5px;
+	font-size: 11px;
+}
+.sectionvalue {
+	list-style-type: none;
+	margin: 5px;
+	padding: 5px;
+}
+/* New Announcements Tool */
+.announcements_datum {
+	font-size: 12px;
+	font-weight: italic;
+	color: #666666;
+}
+/* System announcements on homepage */
+div.system_announcements {
+}
+div.system_announcements h3 {
+}
+div.system_announcements ul {
+	list-style-type: none;
+}
+div.system_announcement {
+	margin: 5px;
+}
+div.system_announcement_title {
+}
+div.system_announcement_content {
+	margin-left: 20px;
+	border-left: 1px solid gray;
+	padding-left: 5px;
+}

BIN
main/css/digedd/images/2leftarrow.gif


BIN
main/css/digedd/images/2rightarrow.gif


BIN
main/css/digedd/images/background_message.png


BIN
main/css/digedd/images/bar_1.gif


BIN
main/css/digedd/images/bar_1m.gif


BIN
main/css/digedd/images/bar_1r.gif


BIN
main/css/digedd/images/bar_1u.gif


BIN
main/css/digedd/images/bg-button.gif


BIN
main/css/digedd/images/bg-footer.gif


BIN
main/css/digedd/images/bg-header1.gif


BIN
main/css/digedd/images/bg-header4.png


BIN
main/css/digedd/images/bg-main.png


BIN
main/css/digedd/images/bg-menu.png


BIN
main/css/digedd/images/bgmenusup.png


BIN
main/css/digedd/images/bullet.gif


BIN
main/css/digedd/images/button_accept.gif


BIN
main/css/digedd/images/button_add.gif


BIN
main/css/digedd/images/button_back.gif


BIN
main/css/digedd/images/button_back.jpg


BIN
main/css/digedd/images/button_delete.gif


BIN
main/css/digedd/images/button_login.gif


BIN
main/css/digedd/images/button_minus.gif


BIN
main/css/digedd/images/button_next.gif


BIN
main/css/digedd/images/button_plus.gif


BIN
main/css/digedd/images/button_refresh.gif


BIN
main/css/digedd/images/button_search.gif


BIN
main/css/digedd/images/button_upload.gif


BIN
main/css/digedd/images/dataTable/Sorting icons.psd


BIN
main/css/digedd/images/dataTable/back_disabled.jpg


BIN
main/css/digedd/images/dataTable/back_enabled.jpg


BIN
main/css/digedd/images/dataTable/favicon.ico


BIN
main/css/digedd/images/dataTable/forward_disabled.jpg


BIN
main/css/digedd/images/dataTable/forward_enabled.jpg


BIN
main/css/digedd/images/dataTable/sort_asc.png


BIN
main/css/digedd/images/dataTable/sort_asc_disabled.png


BIN
main/css/digedd/images/dataTable/sort_both.png


BIN
main/css/digedd/images/dataTable/sort_desc.png


BIN
main/css/digedd/images/dataTable/sort_desc_disabled.png


BIN
main/css/digedd/images/fondoFooter.jpg


BIN
main/css/digedd/images/fondoHeader2.jpg


BIN
main/css/digedd/images/fondoHeader3.jpg


BIN
main/css/digedd/images/fondoNav.jpg


BIN
main/css/digedd/images/footer.jpg


BIN
main/css/digedd/images/header-logo.png


File diff suppressed because it is too large
+ 106 - 0
main/css/digedd/images/header-logo.svg


BIN
main/css/digedd/images/help2.png


BIN
main/css/digedd/images/loading.gif


BIN
main/css/digedd/images/logoMouse.jpg


BIN
main/css/digedd/images/portal.png


BIN
main/css/digedd/images/refresh.png


BIN
main/css/digedd/images/salir.gif


BIN
main/css/digedd/images/shadow.gif


BIN
main/css/digedd/images/systemenouvelles.jpg


BIN
main/css/digedd/images/tab.png


BIN
main/css/digedd/images/tab_center-active.gif


BIN
main/css/digedd/images/tab_center.gif


BIN
main/css/digedd/images/tab_left-active.gif


BIN
main/css/digedd/images/tab_left-hover-active.gif


BIN
main/css/digedd/images/tab_left-hover.gif


BIN
main/css/digedd/images/tab_left.gif


BIN
main/css/digedd/images/tab_right-active.gif


BIN
main/css/digedd/images/tab_right-hover.gif


BIN
main/css/digedd/images/tab_right.gif


BIN
main/css/digedd/images/tab_right.jpg


BIN
main/css/digedd/images/tab_rigth.gif


+ 218 - 0
main/css/digedd/learnpath.css

@@ -0,0 +1,218 @@
+div.text {
+	margin-left : 6;
+	margin-right : 6;
+	margin-top : 5;
+	margin-bottom : 5;
+	text-align : justify;
+}
+span.messagesmall {
+	font-style : italic;
+	color : Red;
+}
+/* newscorm/learnpath */ 
+
+div.lp_actions {
+	background:#F8F8F8;
+	border-bottom:1px solid #999999;
+	padding:3px;
+}
+div.lp_actions img {
+	margin-right:5px;
+}
+div.lp_small_form {
+	background:#F8F8F8;
+	border:1px solid #999999;
+	padding:10px;
+}
+div.lp_small_form input {
+	font-size:10px;
+}
+div.lp_manipulate {
+	background:#F8F8F8;
+	border-bottom:1px dotted #999999;
+	margin-bottom:0px;
+	padding:3px 0 3px 10px;
+}
+div.lp_manipulate a {
+	padding-right:10px;
+}
+div.lp_message {
+	background:#FEC880;
+	border:1px solid #E28C15;
+	font-size:12px;
+	padding:10px;
+}
+div.lp_resource_header {
+	cursor: pointer;
+	background:#F0F0F0;
+	border:1px solid #999999;
+	font-weight:bold;
+	padding:10px;
+	width:350px;
+}
+div.lp_resource_header_end {
+	background:#F0F0F0;
+	border:1px solid #999999;
+	font-weight:bold;
+	padding:10px;
+	width:350px;
+}
+div.lp_resource_elements {
+	background:#FAFAFA;
+	border:1px solid #999999;
+	border-bottom:0;
+	display:none;
+	padding:5px 10px;
+	width:350px;
+}
+div.lp_resource_elements_end {
+	background:#FAFAFA;
+	border:1px solid #999999;
+	border-top: 0px;
+	display:none;
+	padding:5px 10px;
+	width:350px;
+}
+div.lp_resource_elements div {
+	padding:3px;
+}
+div.lp_tree {
+	height:100%;
+	padding:3px 10px 3px 0;
+	overflow-x : auto;
+	overflow-y : auto;
+	width:190px;
+}
+hr {
+	background:#999999;
+	border:0;
+	color:#999999;
+	height:1px;
+	margin:10px auto;
+	width:75%;
+}
+option.bottom {
+	border-top:1px solid #999999;
+	margin-top:2px;
+	padding-top:2px;
+}
+option.top {
+	border-bottom:1px solid #999999;
+	margin-bottom:2px;
+	padding-bottom:2px;
+}
+p.lp_action {
+	margin:5px 0;
+}
+p.lp_text {
+	margin-top:0px;
+}
+p.lp_title {
+	font-weight:bold;
+	margin-top:5px;
+	padding-left:7px;
+}
+table.lp_build {
+	font-size:12px;
+	height:400px;
+	width:100%;
+}
+table.lp_build td {
+	vertical-align:top;
+}
+table.lp_build td.tree {
+	/* border-right:1px solid #999999;*/
+	padding-right: 5px;
+	width:205px;
+}
+table.lp_build td.workspace {
+	padding: 0px;
+	padding-left:5px;
+	width:auto;
+}
+table.lp_form {
+	font-size:12px;
+	margin:0 10px;
+	width:auto;
+}
+table.lp_form td {
+	height:25px;
+	padding:5px;
+	vertical-align:top;
+	width:auto;
+}
+table.lp_form td.label {
+	padding-top:7px;
+	text-align:right;
+}
+table.lp_form td.radio {
+	width:300px;
+}
+table.lp_form td.exercise {
+	width:50px;
+}
+table.lp_form th {
+	background:#F8F8F8;
+	border-bottom:1px solid #999999;
+	border-top:1px solid #999999;
+}
+table.lp_overview th.exercise {
+	width:50px;
+}
+table.lp_form input, table.lp_form select, table.lp_form textarea {
+/*	background:#F8F8F8;
+	border:1px solid #999999;
+	font-family:Arial, Verdana, Helvetica, sans-serif;
+	font-size:12px;
+	padding:1px 2px;
+	width:300px;*/
+}
+table.lp_form td.radio input, table.lp_form td.exercise input {
+	width:auto;
+}
+table.lp_form .small_form {
+	background:#FFFFFF;
+}
+table.lp_form select {
+/*	padding:0;*/
+}
+table.lp_form input.button {
+	width:75px;
+}
+table.lp_overview {
+	font-size:12px;
+	width:100%;
+}
+table.lp_overview td {
+	border-bottom:1px solid #999999;
+	border-top:1px solid #999999;
+	height:20px;
+	padding:3px;
+	vertical-align:middle;
+	width:auto;
+}
+table.lp_overview td.title {
+	width:200px;
+}
+table.lp_overview td.actions {
+	text-align:center;
+	width:100px;
+}
+table.lp_overview td.move {
+	text-align:center;
+	width:50px;
+}
+table.lp_overview th {
+	background:#FFFFFF;
+	padding-left:3px;
+	text-align:center;
+}
+table.lp_overview tr {
+	background:#F8F8F8;
+}
+table.lp_overview tr:hover {
+	background:#E5EDF9;
+}
+table.lp_overview img {
+	margin-left:3px;
+}

+ 943 - 0
main/css/digedd/print.css

@@ -0,0 +1,943 @@
+/* Print Style Sheet for Dokeos  (in progress ...)
+   first default style sheet
+   2004-07-18 by Wolfgang Schneider
+   (info@ws-webservice.de / webmaster@bibelcenter.de)
+   updated on 2005-02-25 by Olivier Brouckaert
+   (oli.brouckaert@dokeos.com)
+   update on 2005-03-01 by Wolfgang Schneider
+   update on 2005-05-27 by Patrick Cool
+   update to print.css on 2005-01-05 by Jeroen Coupe
+   */
+
+body {
+	font-family: arial, verdana, helvetica, sans-serif;
+	font-size: 12px;
+	color: #000;
+	margin: 0;
+	padding: 0;
+	background-color: #fff;
+}
+img {
+	border: none;
+}
+#outerframe {
+	position: relative;  /* do not remove, fixes a bug in IE */
+	border: 1px solid #fff;
+	background-color: #fff;
+}
+/* Hides from IE5-mac \*/
+* html #outerframe {
+	height: 1%;
+}
+/* End hide from IE5-mac */
+
+/*****************************************************
+ *  HEADER STYLES                                    *
+ *****************************************************/
+
+
+#my_courses {
+	background-color: #fff;
+	color: #009;
+}
+/*show the institution*/
+#header1 {
+	padding: 2px;
+	float: right;
+}
+#my_courses {
+	display: none;
+}
+#header2 {
+	display: none;
+}
+.subnav {
+	display: none;
+}
+/* show the way to the printed document (breadcrumbs)*/
+#header4 {
+	padding: 2px;
+	border-bottom: 1px solid #4171B5;
+}
+#header4 a {
+	color: #4171b5;
+}
+#toolshortcuts {
+	display:none;
+}
+/*****************************************************
+ *  FOOTER STYLES                                    *
+ *****************************************************/
+#footer {
+	padding: 8px;
+	border-top: 1px solid #4171B5;
+	background-color: #E5EDF9;
+	font-size: 12px;
+}
+#footer .copyright {
+	float: right;
+}
+/*****************************************************
+ *  MAIN STYLES                                      *
+ *****************************************************/
+#main {
+	position: relative; /* to avoid the IE peekabo bug*/
+	margin: 0px auto;
+	margin-top: 10px;
+	width: 98%;
+	padding: 0px 10px 10px 10px;
+	background-color: #fff;
+	min-height: 320px;
+}
+/* for content section in main index.php file */
+.maincontent {
+	float: left;
+	width: 78%;
+	padding: 4px;
+	background-color: #fff;
+}
+/* "menu" doesn't show in printed version*/
+.menu {
+	display: none;
+}
+#lang_form {
+	text-align: left;
+	font-size: 12px;
+	margin: 2px 0 10px 0;
+	padding: 2px;
+}
+#lang_form input, #lang_form select {
+	font-size: 12px;
+}
+#formLogin label {
+	font-size: 12px;
+	margin: 4px 6px;
+}
+#formLogin input {
+	font-size: 13px;
+	margin: 4px 6px;
+}
+#login_fail {
+	margin: 0 6px 6px 6px;
+	padding: 4px;
+	border: 1px solid #f00;
+	background-color: #fff;
+	font-size: 12px;
+	color: #f00;
+}
+/*** layout divs for course and tool pages (being tested in some pages) ****/
+#contentfloatholder {/* also makes the right "sliding" tab  */
+	/*background: url(../pics/sidebar-r.gif) repeat-y 100% 0;
+background: url(../pics/bg_fountain.jpg) no-repeat 100% 0; */
+float: left;
+	width: 100%;
+	position: relative;
+}
+#contentfloatholder:after {
+	/* this is for NN6 to clear floats */
+content: ".";
+	display: block;
+	height: 0px;
+	clear: both;
+	visibility: hidden;
+}
+#centerwrap {
+	float: left;
+	width: 100%;
+	margin-right: -95%;/* this needs to be less than 100% for Moz/Mac which thinks
+         it's empty otherwise. The difference is made up by putting a
+         negative left margin on the left float:
+	   Note IE/Mac doesn't like this method ~ it wants the 100% so it can
+	   be fed in using IE only CSS below becasue IE/Win also works with the 100% method.
+	*/
+}
+/*no navigation options need to be showed in the print version */
+#toolnav {
+	display:none;
+}
+/* Hide from IE5-mac. Only IE-win sees this. \*/
+* html #toolnav {
+	margin-right: 0px;
+}
+* html #center {
+	height: 1%;
+	margin-left: 0;
+}
+/* End hide from IE5/mac */
+
+
+/* various sections in course-home.php file  */
+#toolremove {
+	width: 40%;
+	color: #f00;
+	font-weight: bold;
+	margin: 10px auto;
+	padding: 10px;
+	border: 2px solid #f00;
+}
+#courseintro {
+	clear: both;
+	width: 80%;
+	margin: 10px auto;
+	padding: 10px;
+	border-bottom: 1px solid #4171B5;
+}
+#courseintro_icons {
+	clear: both;
+	width: 80%;
+	margin: 10px auto;
+}
+.everybodyview {
+	position: relative; /* to avoid the IE peekabo bug ?*/
+	width: 80%;
+	margin: 10px auto;
+	padding: 10px;
+}
+.courseadminview, .platformadminview {
+	position: relative;
+	width: 80%;
+	margin: 25px auto 10px;
+	padding: 10px;
+	border: 1px solid #4171B5;
+}
+.viewcaption {
+	position: relative;
+	top: -20px;
+	font-size: 12px;
+	font-weight: bold;
+	color: #4171B5;
+	background-color: #fff;
+	padding: 0 4px;
+}
+/***********************************/
+
+/* ===================================================
+					AGENDA STYLES
+===================================================*/
+
+/* ---------------------------------------------------
+	check if these are still used or not
+-----------------------------------------------------*/
+#agenda {
+	width: 100%;
+	margin: 0 auto;
+	border: 1px solid #4171B5;
+	border-collapse: collapse;
+}
+.agenda_month_divider {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #fff;
+	text-align: center;
+}
+#agenda #title a {
+	color: #fff;
+}
+#agenda .agendaitem {
+	font-size: 12px;
+}
+#smallcalendar .title {
+	background-color: #4171B5;
+	font-weight: bold;
+	padding: 2px;
+	color: #fff;
+	text-align: center;
+	font-size: 11px;
+}
+#smallcalendar .title a {
+	color: #fff;
+}
+/*agenda select not visible on print*/
+#agenda_select {
+	display:none;
+}
+/* ---------------------------------------------------
+	styles for the agenda (day, week, month view)
+-----------------------------------------------------*/
+#agenda_list {
+	width: 100%;
+	margin: 0 auto;
+	border: 1px solid #fff;
+	border-collapse: collapse;
+}
+/*The caption of the calendar (displays the month and the << and >> links*/
+#agenda_list #title {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	text-align: center;
+	border: 1px solid #264269;
+}
+#agenda_list #title a:link, #agenda_list #title a:visited {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	text-align: center;
+}
+#agenda_list #title a:hover {
+	background-color: #4171B5;
+	font-weight: bold;
+	font-size: 12px;
+	color: #ff0000;
+	text-align: left;
+	padding: 2px 10px;
+	text-align: center;
+}
+/* The cells with the name of the days of the weeks (mon->sun)*/
+#agenda_list .weekdays {
+	background-color: #D3DFF1;
+	text-align: center;
+	font-weight: bold;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+}
+/* The cells for the days (1->31) */
+#agenda_list .days_week {
+	height: 40px;
+	width: 12%;
+	text-align: left;
+	vertical-align: top;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+	background-color: #f5f5f5;
+}
+#agenda_list .days_weekend {
+	height: 40px;
+	width: 12%;
+	text-align: left;
+	vertical-align: top;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+	background-color: #e6e6e6;
+}
+#agenda_list .days_today {
+	height: 40px;
+	width: 12%;
+	text-align: left;
+	vertical-align: top;
+	border: 1px solid #264269;
+	border-collapse: collapse;
+	background-color: #FFCA8D;
+	color: #CC3300;
+	font-weight: bold;
+}
+/* text in the cells: display of agenda items (visible)*/
+#agenda_list .data {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: bold;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .datanotbold {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .text {
+	background-color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+/*text in the cells: display of agenda items (invisible)*/
+#agenda_list .data_hidden {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: bold;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+	color: #999999;
+}
+#agenda_list .datanotbold_hidden {
+	background-color: #eee;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+	color: #999999;
+}
+#agenda_list .text_hidden {
+	background-color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+	color: #999999;
+}
+/*text in the cells: display of agenda items (highlighted)*/
+#agenda_list .datanow {
+	background-color: #FFCC00;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: bold;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .datanotboldnow {
+	background-color: #FFCC00;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+#agenda_list .textnow {
+	background-color: #fff;
+	text-align: left;
+	padding: 2px 10px;
+	font-weight: normal;
+	border: 0px solid #4171B5;
+	border-collapse: collapse;
+}
+/* ---------------------------------------------------
+	styles for the mini agenda
+-----------------------------------------------------*/
+/* mini agenda invisible in print */
+
+#smallcalendar {
+	display:none;
+}
+/*without this the small calendar's space isn't liberated, because the table width is hardcoded in the php*/
+#layoutHulp {
+	display:none;
+}
+/* ---------------------------------------------------
+	styles for the personal agenda
+-----------------------------------------------------*/
+.personal_agenda {
+	color: #008000;
+}
+.personal_agenda a:link, .personal_agenda a:visited {
+	color: #008000;
+}
+a.personal_agenda:link, a.personal_agenda:visited {
+	color: #008000;
+}
+.personal_agenda a:hover, .personal_agenda a:hover {
+	color: #666666;
+}
+a.personal_agenda:hover, a.personal_agenda:hover {
+	color: #666666;
+}
+/* normal and erro message-box */
+.normal-message, .error-message {
+	position: relative;
+	margin: 10px auto;
+	margin-left: -250px;
+	width: 500px;
+	left: 50%;
+	right: 50%;
+	border-width: 1px;
+	border-style: solid;
+	padding: 5px;
+}
+.normal-message {
+	border: 1px solid #FF8001;
+	color: #000;
+	background-color: #FDC77E;
+}
+.error-message {
+	border: 1px solid #3F70AC;
+	color: #000;
+	background-color: #FDC273;
+}
+#message {
+	margin: 0 auto;
+	text-align: center;
+}
+#message select {
+	margin: 10px 0;
+	width: 220px;
+}
+#message textarea {
+	margin: 10px 0;
+}
+#message td {
+	padding: 4px;
+}
+/* styles from the document.php file */
+.comment {
+	margin-left: 30px;
+}
+.invisible {
+	color: #999;
+}
+.invisible a:link, .invisible a:visited {
+	color: #999;
+}
+a.invisible:link, a.invisible:visited {
+	color: #999;
+}
+/* styles from the upload.php file */
+dl.upload_option {
+	margin: 1em 0;
+	padding: 0;
+}
+.upload_option dt {
+	font-weight:bold;
+	margin:0;
+}
+.upload_option dd {
+	margin:0;
+}
+/* styles from dropbox.php file */
+.dropbox_detail {
+	font-size: small
+}
+.dropbox_date {
+	font-style: italic
+}
+.dropbox_person {
+	font-weight: bold
+}
+.dropbox_listTitle {
+	color: #000000;
+}
+.dropbox_feedback {
+	font-size: x-small;
+	height: 50px;
+	width: 200px;
+	overflow: auto
+}
+.dropbox_feedbacks {
+	height: 250px;
+	width: 100%;
+	overflow: auto
+}
+/* styles for chat / conference tools */
+#chat_entermessage {
+	background-color: #D6E5FA;
+	border-top: 1px solid #4171B5;
+	padding: 5px;
+	margin: 0;
+}
+/* styles for general formatting */
+.clear {
+	clear: both;
+	line-height: 0px;
+	height: 0;
+}
+p, blockquote, ol, ul {
+	font-size: 12px;
+}
+h1 {
+	font-size: 21px;
+}
+h2 {
+	font-size: 18px;
+}
+h3 {
+	font-size: 15px;
+	margin-top:0px;
+	padding-top:0px;
+}
+h4 {
+	font-size: 12px;
+}
+h5, h6 {
+	font-family: verdana, arial, helvetica, sans-serif;
+}
+/* the following for regular <a> elements */
+a:link {
+	text-decoration: none;
+	font-weight : bold;
+	color : #4171b5;
+}
+a:visited {
+	text-decoration: none;
+	font-weight : bold;
+	color : #4171b5;
+}
+a:active {
+	text-decoration: none;
+	font-weight : bold;
+	color : #f00;
+}
+input.link_alike {
+	background-color: #FFFFFF;
+	border-width: 0px;
+	color: #4171b5;
+	font-weight: bold;
+	text-align: left;
+	padding: 0px;
+	margin: 0px;
+}
+input.link_alike:hover {
+	background-color: #FFFFFF;
+	border-width: 0px;
+	color: #FF0000;
+	font-weight: bold;
+	text-align: left;
+	padding: 0px;
+	margin: 0px;
+}
+/* the following for the greyed out elements */
+a.nobold:link, a.nobold:visited, a.nobold:active {
+	font-weight: normal;
+	color: #999;
+	margin: 0 0 0 25px;
+}
+a.nobold:hover {
+	font-weight: normal;
+	color: #999;
+	text-decoration: underline;
+	margin: 0 0 0 25px;
+}
+.note {
+	margin: 6px;
+	font-size: 12px;
+	line-height: 14px;
+	font-family: verdana, arial, helvetica, sans-serif;
+	background-color: #FFF089;
+	color: #4171B5;
+	border: 1px solid #4171B5;
+	padding: 4px;
+}
+.alternativeBgLight {
+	background-color: #f5f5f5;
+	border: 1px solid #4171B5;
+	border-collapse: collapse;
+}
+.alternativeBgDark {
+	background-color: #ccf;
+	border: 1px solid #4171B5;
+	border-collapse: collapse;
+}
+.myagendatoday {
+	background-color: #FFCA8D;
+	border-collapse: collapse;
+	font-family: verdana, arial, helvetica, sans-serif;
+	color: #CC3300;
+	font-weight: bold;
+}
+/*****************************************************
+ *  FORM STYLES                                      *
+ *****************************************************/
+div.row {
+	clear: both;
+	padding-top: 5px;
+}
+div.row div.form_header {
+	white-space: nowrap;
+	padding: 2px;
+	background-color: #E5EDF9;
+	border: 1px solid #4271B5;
+}
+div.row div.label {
+	display: inline;
+	float: left;
+	width: 18%;
+	text-align: right;
+}
+div.row div.formw {
+	display: inline;
+	width: 80%;
+}
+[dir=ltr] div.row div.label, [dir=rtl] div.row div.formw {
+	float: left;
+	text-align: right;
+}
+[dir=rtl] div.row div.label, [dir=ltr] div.row div.formw {
+	float: right;
+	text-align: left;
+}
+span.form_required {
+	color: #f00;
+}
+span.form_error {
+	color: #f00;
+	font-size: x-small;
+	margin: 2px;
+}
+/* Form elements - some general styling */
+select, textarea {
+	color : #000;
+	border: 1px solid #000;
+}
+input.checkbox {
+	border-width: 0;
+}
+input.mainoption {
+	font-weight : bold;
+}   /* Main submit button      */
+input.liteoption {
+	font-weight : normal;
+} /* None-bold submit button */
+select, input[type=checkbox], input[type=radio], input[type=button], input[type=submit] {
+	cursor:	pointer;
+	font-size: 12px;
+}
+input[text] {
+	font-size: 12px;
+}
+/************************************************************
+  styles below here are not necessarily used in the current
+	release and the CVS files, they are from earlier versions,
+	and have been left untouched for anyone needing them in
+	their own platform ...
+*************************************************************/
+.topBanner a:link, .topBanner a:active, .topBanner a:visited {
+	text-decoration:none;
+	color:white;
+}
+.topBanner table {
+	text-decoration:none;
+}
+.topBanner a:hover {
+	text-decoration:underline;
+}
+.topBanner td {
+	border-top: solid White 1px;
+}
+.alternativeBgLight {
+	background-color: #f5f5f5;
+}
+.alternativeBgDark {
+	background-color: #e6e6e6
+}
+.forms {
+	letter-spacing: normal;
+	text-align: justify;
+	text-indent: 3pt;
+	word-spacing: normal;
+	padding: 2px 5px;
+}
+.formsTips {
+	text-align: justify;
+	text-indent: 15pt;
+	word-spacing: normal;
+}
+/*
+input.forms	{ letter-spacing: normal; text-align: justify; text-indent: 3pt;	word-spacing: normal;
+padding-top: 0px;	padding-right: 0px;	padding-bottom: 0px;	padding-left: 0px;}
+*/
+.warn {
+	border: thin double Silver;
+	margin-left: 15px;
+	margin-right: 15px;
+	font-family: serif;
+	color: Red;
+	padding-left: 25px;
+}
+.small {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px
+}
+.xsmall {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 11px
+}
+.xxsmall {
+	font-family: Verdana, Arial, Helvetica, sans-serif;
+	font-size: 9px
+}
+/*****************************************************
+ *  DATA TABLE STYLES                                *
+ *****************************************************/
+.cell_header {
+	background-color: #EEEEFF;
+	font-weight:bold;
+	text-align:left;
+	padding-left:5px;
+}   /* header cell in data table in tools */
+.data_table {
+	border-collapse: collapse;
+	width: 100%;
+	padding: 5px;
+}
+.data_table th {
+	/*padding-right: 20px;*/
+	border: 1px solid gray;
+	background-color: #E5EDF9;
+	text-align: left;
+}
+.data_table tr.row_odd {
+	background-color: #fafafa;	
+}
+.data_table tr.row_odd:hover, .data_table tr.row_even:hover {
+	background-color: #f0f0f0;
+}
+.data_table tr.row_even {
+	background-color: #fff;	
+}
+.data_table td .highlight {
+    font-weight: bold;
+}
+.data_table td {
+	padding: 5px;	
+	border-bottom: 1px solid #b0b0b0;
+	border-right: 1px dotted #e1e1e1;
+	border-left: 1px dotted #e1e1e1;
+	text-align: left;
+}
+
+
+.data_table_no_border {
+    border-collapse: collapse;
+    border-spacing: 0;
+    font-size: 12px;
+    margin-bottom: 15px;
+    margin-top: 8px;
+    text-align: left;
+    width: 100%;    
+}
+
+.data_table_no_border td {
+    line-height: normal;
+    padding: 6px;
+    text-align: left;
+    vertical-align: middle;
+}
+.data_table_no_border .highlight {
+    font-weight: bold;
+}
+
+/* admin page tool list definitions */
+.tool_list dt {
+	font-weight: bold;
+}
+.tool_list dd {
+	margin: 0;
+	padding: 4px 0 0 10px;
+}
+/* divs for category list / platform news on home page */
+.home_cats {
+	width: 45%;
+	float: left;
+	position: relative;
+	margin: 0;
+	padding: 0px;
+	padding-top: 8px;
+	background: #fff;
+}
+.home_news {
+	width: 45%;
+	float: right;
+	position: relative;
+	margin: 0;
+	padding: 0px;
+	padding-top: 8px;
+	background: #fff;
+}
+label.left {
+	float: left;
+	width: 15em;
+	margin: 0 0 0.5em 0;
+}
+form br {
+	clear: both;
+}
+/* Fix for alignment problem in IE-Win browsers  */
+/*  Hide from IE5-mac. Only IE-win sees this. \*/
+* html .label {
+	margin-right: 10px;
+}
+* html .data {
+	height: 1%;
+	margin-left: 0;
+}
+/* End hide from IE5/mac */
+
+.radio, .checkbox {
+	margin: 0;
+	padding: 0;
+	border: none;
+	background-color: transparent;
+}
+.required {
+	color: #f00;
+	font-weight: bold;
+}
+/* Admin section */
+div.admin_section {
+	width: 40%;
+	float: left;
+	padding: 5px;
+	margin: 10px 20px;
+}
+div.admin_section h4 {
+	margin: 0;
+	border-bottom: 1px solid gray;
+	width: 100%;
+}
+.user_course_category {
+	background-color: #efefef;
+	border: 1px solid #666;
+	font-weight: bold;
+	color: #666;
+	list-style-type: none;
+	margin: 5px;
+	padding: 5px;
+}
+/* Styles for the Dokeos Config Settings of the platform admin section*/
+.sectiontitle {
+	background-color: #EFEFEF;
+	border: 1px solid #cccccc;
+	font-weight: bold;
+	color: #666666;
+	list-style-type: none;
+	margin: 5px;
+	padding: 5px;
+	font-size: 11px;
+}
+.sectioncomment {
+	color: #000000;
+	margin: 5px;
+	padding: 5px;
+	font-size: 11px;
+}
+.sectionvalue {
+	list-style-type: none;
+	margin: 5px;
+	padding: 5px;
+}
+/* New Announcements Tool */
+.announcements_datum {
+	font-size: 12px;
+	font-style: italic;
+	color: #666666;
+}
+/* System announcements on homepage */
+div.system_announcements {
+}
+div.system_announcements h3 {
+}
+div.system_announcement {
+	margin: 5px;
+}
+div.system_announcement_title {
+}
+div.system_announcement_content {
+	margin-left: 20px;
+	border-left: 1px solid gray;
+	padding-left: 5px;
+}
+/*****************************************************
+ * special print ccs classes						 *
+ *****************************************************/
+
+ a.full_url_print:after {
+	content: "(" attr(href) ")";
+	font-size: 75%;
+}
+/* to make it in visible in the printed version*/
+.print_invisible {
+	display:none;
+}

+ 213 - 0
main/css/digedd/scorm.css

@@ -0,0 +1,213 @@
+.scormpage {
+    height: 100%;
+}
+.scormpage .menu {
+    width: 180px;
+    float: left;
+    margin: 1px;
+    padding: 0px;
+    margin-top: 0px;
+    padding-top: 0px;
+    font-size: small;
+}
+.lp_toc {
+    background-color: white;
+    height: 380px;
+    width: 99%;
+    border-right: 1px none;
+}
+
+.inner_lp_toc {
+    overflow: auto;
+    background-color: white;
+    height: 210px;   
+}
+
+.inner_lp_toc .scorm_item a {
+    font-weight: bold;
+    font-size: 14px;
+    margin-right: 1px;
+    padding-bottom: 2px;
+    text-decoration: none;
+    font-family: Helvetica,Arial,sans-serif;
+    color: #2F3E46;    
+}
+
+.inner_lp_toc .scorm_item a.chapter_module {
+    font-weight: normal;
+    margin-right: 10px;
+}
+.inner_lp_toc .scorm_item_highlight {   
+    border:1px solid #00516e;
+    background:#4b88b6;
+    font-weight:bold;
+    
+    text-shadow:0 -1px 1px #014d68;
+    background-image:-webkit-gradient(linear,left top,left bottom,from(#72b0d4),to(#4b88b6));
+    background-image:-webkit-linear-gradient(top,#72b0d4,#4b88b6);
+    background-image:-moz-linear-gradient(top,#72b0d4,#4b88b6);
+    background-image:-ms-linear-gradient(top,#72b0d4,#4b88b6);
+    background-image:-o-linear-gradient(top,#72b0d4,#4b88b6);
+    background-image:linear-gradient(top,#72b0d4,#4b88b6);    
+    margin-right: 0px;
+    padding: 10px 0px 10px 0px;
+    text-decoration: none;  
+}
+
+.inner_lp_toc .scorm_item_highlight a {
+    color:#fff;
+    margin-right: 1px;
+    text-decoration: none;
+    font-weight: bold;
+}
+
+.inner_lp_toc .scorm_item_section {
+    border:1px solid #222;
+    background:#333;
+    font-weight:bold;
+    color:#fff;
+    text-shadow:0 -1px 1px #000;
+    background-image:-webkit-gradient(linear,left top,left bottom,from(#555),to(#333));
+    background-image:-webkit-linear-gradient(top,#555,#333);
+    background-image:-moz-linear-gradient(top,#555,#333);
+    background-image:-ms-linear-gradient(top,#555,#333);
+    background-image:-o-linear-gradient(top,#555,#333);
+    background-image:linear-gradient(top,#555,#333);
+    
+    margin-right: 1px;
+    padding: 10px 0px 10px 0px;
+    text-decoration: none;  
+    
+}
+
+.inner_lp_toc .scorm_item {
+    font-size: 16px;
+    margin-left: 10px;
+    margin-right:10px;
+    text-decoration: none;
+    border-color: rgba(255, 255, 255, 0.3);  
+}
+
+.inner_lp_toc .scorm_item_1 {
+    border-bottom: 1px solid #CCCCCC;
+    background:#eee;
+    font-weight:bold;
+    color:#444;
+    text-shadow:0 1px 1px #f6f6f6;
+    background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));
+    background-image:-webkit-linear-gradient(top,#fdfdfd,#eee);
+    background-image:-moz-linear-gradient(top,#fdfdfd,#eee);
+    background-image:-ms-linear-gradient(top,#fdfdfd,#eee);
+    background-image:-o-linear-gradient(top,#fdfdfd,#eee);
+    background-image:linear-gradient(top,#fdfdfd,#eee);
+    
+    margin-right: 1px;
+    padding: 10px 0px 10px 0px;
+    text-decoration: none;
+    font-weight: normal;
+    /* background:#FDFDFD; */   
+}
+
+.inner_lp_toc .scorm_item_2 {    
+    background-image:-webkit-gradient(linear,left top,left bottom,from(#fdfdfd),to(#eee));
+    background-image:-webkit-linear-gradient(top,#fdfdfd,#eee);
+    background-image:-moz-linear-gradient(top,#fdfdfd,#eee);
+    background-image:-ms-linear-gradient(top,#fdfdfd,#eee);
+    background-image:-o-linear-gradient(top,#fdfdfd,#eee);
+    background-image:linear-gradient(top,#fdfdfd,#eee);    
+    border-bottom: 1px solid #CCCCCC;
+    color: #444444;
+    font-weight: bold;
+    text-shadow: 0 1px 1px #F6F6F6;
+    margin-right: 1px;  
+    padding: 10px 0px 10px 0px;
+    text-decoration: none;
+    font-weight: normal;
+}
+
+.inner_lp_toc .scorm_title {
+    font-weight: bold;
+    background:#ccc;
+    font-size: 14px;
+    color: #444;
+}
+.inner_lp_toc .scorm_title_text {
+    margin-left: 10px;
+}
+.inner_lp_toc .scorm_status_img {
+    margin:0px;
+    margin-left: -10px;
+    width:10px;
+}
+.lp_navigation {
+    overflow: auto;
+    background-color: white;
+    height: 44px;
+    width:180px;
+    padding-top: 4px;
+    padding-bottom:0px;
+    border: none;
+    margin-top: -18px;
+    border-top: 1px dotted black;
+    border-bottom: 1px dotted black;
+}
+.lp_navigation_elem {
+    padding-left: 15px;
+    padding-top: 0px;
+}
+/*.scormpage .menu */
+.lp_navigation_elem .progresstext {
+    margin-top: -20px;
+}
+/*.scormpage .menu */
+.lp_navigation_elem .buttons {
+    margin-left: 0px;
+    margin-right: 0em;
+    margin-top: 0.4em;
+}
+.scormpage .menu .notification {
+    background-color: white;
+    height: 50px;
+}
+.scormpage .menu .notification .message {
+    background-color: white;
+    height: 50px;
+    width: 180px;
+    border: none;
+}
+.scormpage .content {
+    /*float: left;
+    width: 60%;*/
+    margin-top: 0px;
+    padding-top: 0px;
+    padding-left: 180px;
+    background-color: white;
+}
+.iframe {
+    border: 0px solid black;
+    height: 100%;
+    width: 95%;
+    margin: 0px;
+    padding-right: 0px;
+    overflow: auto;
+    vertical-align: top;
+}
+.scormpage .footer {
+    clear: both;
+}
+#image_preview {
+    padding-left: 17px;
+}
+#msg_div_id {
+    padding-left: 17px;
+    padding-top: 4px;
+}
+.scorm_title_text {
+    margin-left: 10px;
+    font-weight: bold;
+    background:#eee;
+    font-size: 16px;
+    color: #444;
+    width: 89%;
+    padding: 1px 5px 3px 8px;
+}

+ 82 - 0
main/css/digedd/scormfs.css

@@ -0,0 +1,82 @@
+.scormpage {
+}
+.scormpage .menu {
+	width: 180px;
+	padding: 0px;
+	font-size: small;
+	position: absolute;
+	background-color: white;
+}
+.scormpage .menu .lp_nav {
+	height: 50px;
+	width: 160px;
+	padding-top: 4px;
+	padding-bottom:0px;
+	/*	
+	margin-left: 10px;
+	margin-right: 10px;
+*/
+	margin-top: 0px;
+}
+.lp_navigation_elem {
+	padding-left: 15px;
+	padding-top: 0px;
+}
+/*.scormpage .menu */
+.lp_navigation_elem .progresstext {
+	font-size: smaller;
+}
+/*.scormpage .menu */
+.lp_navigation_elem .buttons {
+	margin-left: 5px;
+	margin-right: 0em;
+	margin-top: 0.4em;
+}
+#msg_div_id {
+	padding-left: 10px;
+	padding-top: 4px;
+}
+.scormpage .menu .notification {
+	height: 50px;
+	margin-left: 15px;
+	margin-right: 15px;
+}
+.scormpage .menu .notification .message {
+	height: 50px;
+	width: 140px;
+	border: none;
+}
+.scormpage .menu .notification .lp_log {
+	height: 100px;
+	width: 180px;
+	border: none;
+	overflow: auto;
+}
+.scormpage .content .iframe {
+	/*
+	border: none;
+	height: 700px;
+	margin: 0px;
+	padding-right: 0px;
+	margin-right: 0%;
+	margin-left: 0%;
+	*/
+	/* trying the absolute mode */
+	position: fixed;
+	bottom:0;
+	left:0;
+	width: 100%;
+	height: 100%;
+}
+.scormpage .footer {
+	clear: both;
+}
+#image_preview {
+	padding-left: 17px;
+}
+#author_name {
+	padding-left: 5px;
+	padding-top: 5px;
+	font-size: 11px;
+	color:#888;
+}

Some files were not shown because too many files changed in this diff