Browse Source

Merge branch '1.11.x' of github.com:chamilo/chamilo-lms into 1.11.x

Julio 8 years ago
parent
commit
c47b8a5b1d

+ 39 - 0
app/Migrations/Schema/V111/Version20160701110000.php

@@ -0,0 +1,39 @@
+<?php
+/* For licensing terms, see /license.txt */
+
+namespace Application\Migrations\Schema\V111;
+
+use Application\Migrations\AbstractMigrationChamilo;
+use Doctrine\DBAL\Schema\Schema;
+use Doctrine\DBAL\Types\Type;
+
+/**
+ * Class Version20160701110000
+ * Add option to remove splash screen on course creation
+ * @package Application\Migrations\Schema\V111
+ */
+class Version20160701110000 extends AbstractMigrationChamilo
+{
+    /**
+     * @param Schema $schema
+     * @throws \Doctrine\DBAL\DBALException
+     * @throws \Doctrine\DBAL\Schema\SchemaException
+     */
+    public function up(Schema $schema)
+    {
+        $this->addSql("INSERT INTO settings_current (variable, subkey, type, category, selected_value, title, comment, scope, subkeytext, access_url_changeable) VALUES ('course_creation_splash_screen',NULL,'radio','Course','true','CourseCreationSplashScreenTitle','CourseCreationSplashScreenComment','',NULL, 1)");
+        $this->addSql("INSERT INTO settings_options (variable, value, display_text) VALUES ('course_creation_splash_screen','true','Yes') ");
+        $this->addSql("INSERT INTO settings_options (variable, value, display_text) VALUES ('course_creation_splash_screen','false','No') ");
+    }
+
+    /**
+     * @param Schema $schema
+     * @throws \Doctrine\DBAL\DBALException
+     * @throws \Doctrine\DBAL\Schema\SchemaException
+     */
+    public function down(Schema $schema)
+    {
+        $this->addSql("DELETE FROM settings_current WHERE variable = 'course_creation_splash_screen'");
+        $this->addSql("DELETE FROM settings_options WHERE variable = 'course_creation_splash_screen'");
+    }
+}

+ 13 - 55
app/Resources/public/css/base.css

@@ -3144,7 +3144,6 @@ a.forum_group_link {
 .subnav .nav > li > .logout {
     padding-top:8px;
 }
-
 .subnav-fixed {
     position: fixed;
     top: 0px;
@@ -3156,12 +3155,7 @@ a.forum_group_link {
     -webkit-border-radius: 0;
     -moz-border-radius: 0;
     border-radius: 0;
-    /*-webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
-        -moz-box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
-            box-shadow: inset 0 1px 0 #fff, 0 1px 5px rgba(0,0,0,.1);
-    */
 }
-
 .doc_folder {
     margin-right:5px;
     margin-top:5px;
@@ -3197,7 +3191,6 @@ a.forum_group_link {
     padding-left: 25px;
     box-shadow:none;
 }
-
 .handle.expanded{
     background-image:  url('../../main/img/div_hide.gif');
     background-repeat: no-repeat;
@@ -3205,7 +3198,6 @@ a.forum_group_link {
     padding-left: 25px;
     box-shadow:none;
 }
-
 .collapsible .handle{
     background-image: url('../../main/img/div_hide.gif');
     background-repeat: no-repeat;
@@ -3213,7 +3205,6 @@ a.forum_group_link {
     padding-left: 25px;
     box-shadow:none;
 }
-
 .collapsible .handle.collapsed{
     background-image:  url('../../main/img/div_show.gif');
     background-repeat: no-repeat;
@@ -3229,7 +3220,6 @@ a.forum_group_link {
     padding-left: 25px;
     box-shadow:none;
 }
-
 .btn.show{
     border:none;
     border-radius: 0;
@@ -3244,7 +3234,6 @@ a.forum_group_link {
     background-position:center center;
     box-shadow:none;
 }
-
 .btn.hide{
     border:none;
     border-radius: 0;
@@ -3259,7 +3248,6 @@ a.forum_group_link {
     background-position:center center;
     box-shadow:none;
 }
-
 .btn.loading{
     border:none;
     border-radius: 0;
@@ -3283,7 +3271,6 @@ a.forum_group_link {
 .boot-tooltip {
     cursor: pointer;
 }
-
 /*
     link
 */
@@ -3386,7 +3373,6 @@ i.size-32.icon-new-note{
 .nav-list img {
     margin-right: 6px;
 }
-
 /* Only for Firefox */
 @-moz-document url-prefix() {
     select#question_type_hidden option {
@@ -3409,12 +3395,9 @@ i.size-32.icon-new-note{
     select#question_type_hidden option[value="14"] {background-image: url(../../main/img/icons/32/mcmagl.png);}
     select#question_type_hidden option[value="16"] {background-image: url(../../main/img/icons/32/calculated_answer.png);}
 }
-
-
 .btn-success.btn-install{
     float: right;
 }
-
 /*
  * work
  */
@@ -3493,7 +3476,6 @@ i.size-32.icon-new-work{
 #settings .panel:hover .admin-edit-block {
     display: block;
 }
-
 /***** Survey *****/
 #list-survey p{
   display: inline-block;
@@ -3968,8 +3950,6 @@ i.size-32.icon-new-work{
   height:20px;
   width: 70%;
 }
-
-
 .bottom_actions {
   display: block;
 }
@@ -4068,11 +4048,9 @@ ul.holder li.bit-box{
   -webkit-border-radius: 4px;
   -moz-border-radius: 4px;
 }
-
 #file-descrtiption.form-control{
   width: 80%;
 }
-
 .session-course-edit .control{
   padding-top: 2em;
   padding-bottom: 2em;
@@ -4143,7 +4121,6 @@ ul.holder li.bit-box{
   padding-left: 10px;
   margin-left: 0px;
 }
-
 .question_options label > input + div.thumbnail {
   padding: 10px;
   box-sizing: border-box;
@@ -4157,7 +4134,6 @@ ul.holder li.bit-box{
   background: linear-gradient(to bottom, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* W3C */
   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */
 }
-
 .question_options label > input:checked + div.thumbnail {
   border: 2px solid #337AB7;
   -webkit-box-shadow: 0 4px 18px #C8C8C8;
@@ -4173,11 +4149,9 @@ ul.holder li.bit-box{
   background: linear-gradient(to bottom, #ffffff 0%,#fffef2 47%,#ffffe2 100%); /* W3C */
   filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ffffe2',GradientType=0 ); /* IE6-9 */
 }
-
 .question_options div.thumbnail p {
   margin: 0;
 }
-
 .question_options div.thumbnail img {
   height: 150px !important;
   width: 190px !important;
@@ -4192,7 +4166,6 @@ ul.holder li.bit-box{
   display: block;
   height: auto !important;
 }
-
 /***    Draggable answer    ***/
 .question_options ul.exercise-draggable-answer{
   float: left;
@@ -4269,7 +4242,6 @@ ul.exercise-draggable-answer .touch-items:hover{
   font-size: 12px;
   cursor: pointer;
 }
-
 /***    Matching Draggable answer ***/
 .drag_question {
   min-height: 4em;
@@ -4932,7 +4904,6 @@ div#chat-remote-video video {
   margin-left: auto;
   margin-right: auto;
 }
-
 #session-list .information-item{
   padding: 10px;
   min-height: 185px;
@@ -5163,8 +5134,6 @@ div#chat-remote-video video {
 .ui-tabs .ui-widget-content a.btn-success{
     color: #fff;
 }
-
-
 .ui-priority-secondary,
 .ui-widget-content .ui-priority-secondary,
 .ui-widget-header .ui-priority-secondary{
@@ -5202,7 +5171,6 @@ div#chat-remote-video video {
 .ui-dialog .ui-dialog-buttonpane{
   border-top: 1px solid #DDD;
 }
-
 .ui-button.ui-widget.ui-state-default {
   background-color:#f5f5f5;
   background-image:-moz-linear-gradient(top,#fff,#e6e6e6);
@@ -5217,7 +5185,6 @@ div#chat-remote-video video {
   text-shadow:0 1px 1px rgba(255,255,255,.75);
   box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)
 }
-
 .ui-button.ui-widget.ui-state-hover{
   border-width: 1px;
   border-style:solid;
@@ -5228,9 +5195,6 @@ div#chat-remote-video video {
   font-weight:normal;
   color:#333333;
 }
-
-
-
 .select2-container .select2-selection--single{
   height: 32px !important;
   border-color: #CCCCCC !important;
@@ -5412,24 +5376,19 @@ div#chat-remote-video video {
 .session-view-row {
   padding: 8px 0;
 }
-
 .session-view-lvl-2 {
   margin-left : 66px;
 }
-
 .session-view-lvl-3 {
   padding-left : 92px;
 }
-
 .session-view-lvl-4 {
   padding-left : 102px;
 }
-
 .session-view-lvl-5 {
   padding-left : 128px;
   font-weight : normal;
 }
-
 .session-view-lvl-6 {
   padding-left : 20px;
 }
@@ -5441,25 +5400,20 @@ div#chat-remote-video video {
 img.sessionView {
   margin-right: 10px;
 }
-
 a.sessionView {
   font-weight : bold;
 }
-
 .session-view-user-category {
   font-weight : bold;
   padding-bottom : 10px;
 }
-
 .session-view-session-category {
   font-weight : bold;
   padding-bottom : 10px;
 }
-
 .session-view-session {
   font-weight : bold;
 }
-
 /* Like the well class */
 .session-view-well {
   min-height: 20px;
@@ -5470,16 +5424,13 @@ a.sessionView {
   border-radius: 4px;
   box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05) inset;
 }
-
 .session-view-button {
   border : none;
   min-width : 28px;
 }
-
 .view-by-session-link {
   min-height: 38px;
 }
-
 .view-by-session-teachers {
   display : none; /* change this if you want to display teachers name in this view */
   font-size : 10px;
@@ -5487,15 +5438,12 @@ a.sessionView {
   overflow-y: auto;
   max-height:50px;
 }
-
 .view-by-session-right-actions {
   float : right;
 }
-
 .view-by-session-right-actions img {
   width : 12px;
 }
-
 .session-view-session-go-to-course-in-session {
   font-size : 12px;
 }
@@ -5680,11 +5628,9 @@ a.sessionView {
 }
 #grad_left {
     left: 0;
-     /* background: url('../../main/img/timeline/grad_left.png') repeat-y; */
 }
 #grad_right {
     right: 0;
-    /* background: url('../../main/img/timeline/grad_right.png') repeat-y; */
 }
 #next,
 #prev {
@@ -5735,7 +5681,19 @@ a.sessionView {
     height: 144px;
     position: relative;
 }
-
+/*
+* Lesson scorm
+*/
+#subtab.tab-wrapper,
+#resource_tab.tab-wrapper .tab-content .tab-pane{
+    margin-top: 20px;
+}
+#resource_tab li a {
+    padding: 5px 10px;
+}
+#resource_tab li.lp_resource_element a{
+    padding: 5px;
+}
 /* CSS NEW TOP ******************************************************************************/
 /* CSS Responsive */
 @media (min-width: 1025px) and (max-width: 1200px) {

+ 13 - 5
app/bootstrap.php.cache

@@ -1358,7 +1358,7 @@ const HTTP_REQUEST_URI_TOO_LONG = 414;
 const HTTP_UNSUPPORTED_MEDIA_TYPE = 415;
 const HTTP_REQUESTED_RANGE_NOT_SATISFIABLE = 416;
 const HTTP_EXPECTATION_FAILED = 417;
-const HTTP_I_AM_A_TEAPOT = 418; const HTTP_UNPROCESSABLE_ENTITY = 422; const HTTP_LOCKED = 423; const HTTP_FAILED_DEPENDENCY = 424; const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425; const HTTP_UPGRADE_REQUIRED = 426; const HTTP_PRECONDITION_REQUIRED = 428; const HTTP_TOO_MANY_REQUESTS = 429; const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; const HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451;
+const HTTP_I_AM_A_TEAPOT = 418; const HTTP_MISDIRECTED_REQUEST = 421; const HTTP_UNPROCESSABLE_ENTITY = 422; const HTTP_LOCKED = 423; const HTTP_FAILED_DEPENDENCY = 424; const HTTP_RESERVED_FOR_WEBDAV_ADVANCED_COLLECTIONS_EXPIRED_PROPOSAL = 425; const HTTP_UPGRADE_REQUIRED = 426; const HTTP_PRECONDITION_REQUIRED = 428; const HTTP_TOO_MANY_REQUESTS = 429; const HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE = 431; const HTTP_UNAVAILABLE_FOR_LEGAL_REASONS = 451;
 const HTTP_INTERNAL_SERVER_ERROR = 500;
 const HTTP_NOT_IMPLEMENTED = 501;
 const HTTP_BAD_GATEWAY = 502;
@@ -1407,7 +1407,7 @@ public static $statusTexts = array(
 415 =>'Unsupported Media Type',
 416 =>'Range Not Satisfiable',
 417 =>'Expectation Failed',
-418 =>'I\'m a teapot', 422 =>'Unprocessable Entity', 423 =>'Locked', 424 =>'Failed Dependency', 425 =>'Reserved for WebDAV advanced collections expired proposal', 426 =>'Upgrade Required', 428 =>'Precondition Required', 429 =>'Too Many Requests', 431 =>'Request Header Fields Too Large', 451 =>'Unavailable For Legal Reasons', 500 =>'Internal Server Error',
+418 =>'I\'m a teapot', 421 =>'Misdirected Request', 422 =>'Unprocessable Entity', 423 =>'Locked', 424 =>'Failed Dependency', 425 =>'Reserved for WebDAV advanced collections expired proposal', 426 =>'Upgrade Required', 428 =>'Precondition Required', 429 =>'Too Many Requests', 431 =>'Request Header Fields Too Large', 451 =>'Unavailable For Legal Reasons', 500 =>'Internal Server Error',
 501 =>'Not Implemented',
 502 =>'Bad Gateway',
 503 =>'Service Unavailable',
@@ -2204,6 +2204,10 @@ if ($e instanceof InactiveScopeException && self::EXCEPTION_ON_INVALID_REFERENCE
 return;
 }
 throw $e;
+} catch (\Throwable $e) {
+unset($this->loading[$id]);
+unset($this->services[$id]);
+throw $e;
 }
 unset($this->loading[$id]);
 return $service;
@@ -2428,11 +2432,11 @@ protected $booted = false;
 protected $name;
 protected $startTime;
 protected $loadClassCache;
-const VERSION ='2.8.6';
-const VERSION_ID = 20806;
+const VERSION ='2.8.7';
+const VERSION_ID = 20807;
 const MAJOR_VERSION = 2;
 const MINOR_VERSION = 8;
-const RELEASE_VERSION = 6;
+const RELEASE_VERSION = 7;
 const EXTRA_VERSION ='';
 const END_OF_MAINTENANCE ='11/2018';
 const END_OF_LIFE ='11/2019';
@@ -3321,6 +3325,10 @@ $response = parent::handle($request, $type, $catch);
 $this->container->set('request', null,'request');
 $this->container->leaveScope('request');
 throw $e;
+} catch (\Throwable $e) {
+$this->container->set('request', null,'request');
+$this->container->leaveScope('request');
+throw $e;
 }
 $this->container->set('request', null,'request');
 $this->container->leaveScope('request');

+ 1 - 1
main/badge/assign.php

@@ -13,7 +13,7 @@ use Chamilo\CoreBundle\Entity\SkillRelUser;
 
 require_once '../inc/global.inc.php';
 
-if (!api_is_platform_admin(false, true)) {
+if (!api_is_platform_admin(false, true) && !api_is_student_boss()) {
     api_not_allowed(true);
 }
 

+ 13 - 6
main/create_course/add_course.php

@@ -309,12 +309,19 @@ if ($form->validate()) {
 
                 $add_course_tpl = $tpl->get_template('create_course/add_course.tpl');
                 $message = $tpl->fetch($add_course_tpl);*/
-
-                $url = api_get_path(WEB_CODE_PATH);
-                $url .= 'course_info/start.php?'.api_get_cidreq_params($course_info['code']);
-                $url .= '&first=1';
-                header('Location: ' . $url);
-                exit;
+                $splash = api_get_setting('course_creation_splash_screen');
+                if ($splash === 'true') {
+                    $url = api_get_path(WEB_CODE_PATH);
+                    $url .= 'course_info/start.php?' . api_get_cidreq_params($course_info['code']);
+                    $url .= '&first=1';
+                    header('Location: ' . $url);
+                    exit;
+                } else {
+
+                    $url = api_get_path(WEB_COURSE_PATH) . $course_info['directory'] . '/';
+                    header('Location: ' . $url);
+                    exit;
+                }
             } else {
                 $message = Display::return_message(
                     get_lang('CourseCreationFailed'),

BIN
main/img/icons/128/add_learnpath_section.png


BIN
main/img/icons/22/add_learnpath_section.png


BIN
main/img/icons/32/add_learnpath_section.png


BIN
main/img/icons/48/add_learnpath_section.png


BIN
main/img/icons/64/add_learnpath_section.png


+ 112 - 98
main/img/icons/svg/add_learnpath_section.svg

@@ -15,7 +15,7 @@
    viewBox="0 0 128 128"
    id="svg10831"
    version="1.1"
-   inkscape:version="0.91 r"
+   inkscape:version="0.91 r13725"
    sodipodi:docname="add_learnpath_section.svg">
   <defs
      id="defs10833">
@@ -71,17 +71,17 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="3.959798"
-     inkscape:cx="93.78989"
-     inkscape:cy="62.578288"
+     inkscape:zoom="2.8"
+     inkscape:cx="72.376621"
+     inkscape:cy="60.85592"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
      units="px"
-     inkscape:window-width="1920"
-     inkscape:window-height="1051"
-     inkscape:window-x="1366"
-     inkscape:window-y="0"
+     inkscape:window-width="1325"
+     inkscape:window-height="747"
+     inkscape:window-x="41"
+     inkscape:window-y="21"
      inkscape:window-maximized="1"
      showguides="false" />
   <metadata
@@ -92,7 +92,7 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
+        <dc:title />
       </cc:Work>
     </rdf:RDF>
   </metadata>
@@ -101,99 +101,113 @@
      inkscape:groupmode="layer"
      id="layer1"
      transform="translate(0,-924.36216)">
-    <rect
-       ry="6.5209804"
-       y="927.48462"
-       x="15.57883"
-       height="121.99998"
-       width="105.45155"
-       id="rect15963"
-       style="fill:#cccccc;fill-opacity:1;stroke:#a1a1a1;stroke-opacity:1;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none" />
     <g
-       id="g11438"
-       transform="matrix(1.3419069,0,0,1,-32.132835,-0.50507627)">
+       id="g4259"
+       inkscape:export-filename="/var/www/chamilo11/main/img/icons/22/add_learnpath_section.png"
+       inkscape:export-xdpi="15.46875"
+       inkscape:export-ydpi="15.46875">
       <rect
-         style="fill:#ff0000;fill-opacity:1;stroke:none"
-         id="rect15955"
-         width="11.143282"
-         height="19.923815"
-         x="104.32186"
-         y="947.99933"
-         ry="2.1181552" />
+         ry="0"
+         y="924.36218"
+         x="0"
+         height="128"
+         width="128"
+         id="rect4244"
+         style="opacity:0;fill:#a1a1a1;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
       <rect
-         ry="2.1181552"
-         y="969.20563"
-         x="104.4745"
-         height="19.923815"
-         width="11.143282"
-         id="rect15957"
-         style="fill:#44aa00;fill-opacity:1;stroke:none" />
+         style="fill:#cccccc;fill-opacity:1;stroke:none;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         id="rect15963"
+         width="95.986"
+         height="119.05708"
+         x="16.14473"
+         y="928.95605"
+         ry="7.1435895" />
+      <g
+         transform="matrix(1.3419069,0,0,1,-32.132835,-0.50507627)"
+         id="g11438">
+        <rect
+           ry="2.1181552"
+           y="947.99933"
+           x="104.32186"
+           height="19.923815"
+           width="11.143282"
+           id="rect15955"
+           style="fill:#ff0000;fill-opacity:1;stroke:none" />
+        <rect
+           style="fill:#44aa00;fill-opacity:1;stroke:none"
+           id="rect15957"
+           width="11.143282"
+           height="19.923815"
+           x="104.4745"
+           y="969.20563"
+           ry="2.1181552" />
+        <rect
+           ry="2.1181552"
+           y="990.41193"
+           x="104.32186"
+           height="19.923815"
+           width="11.143282"
+           id="rect15959"
+           style="fill:#ff6600;fill-opacity:1;stroke:none" />
+        <rect
+           style="fill:#2e75a3;fill-opacity:1;stroke:none"
+           id="rect15961"
+           width="11.143282"
+           height="19.923815"
+           x="104.62714"
+           y="1011.6179"
+           ry="2.1181552" />
+      </g>
       <rect
-         style="fill:#ff6600;fill-opacity:1;stroke:none"
-         id="rect15959"
-         width="11.143282"
-         height="19.923815"
-         x="104.32186"
-         y="990.41193"
-         ry="2.1181552" />
-      <rect
-         ry="2.1181552"
-         y="1011.6179"
-         x="104.62714"
-         height="19.923815"
-         width="11.143282"
-         id="rect15961"
-         style="fill:#2e75a3;fill-opacity:1;stroke:none" />
-    </g>
-    <rect
-       style="fill:url(#linearGradient16495);fill-opacity:1;stroke:#949494;stroke-opacity:1"
-       id="rect15965"
-       width="90.002113"
-       height="113.86665"
-       x="19.18972"
-       y="931.55127"
-       ry="6.0862489" />
-    <g
-       id="g12399"
-       transform="matrix(1.2069733,0,0,1,-20.82586,0)">
-      <rect
-         ry="1.1822907"
-         y="1020.1784"
-         x="40.833721"
-         height="4.4198985"
-         width="59.787262"
-         id="rect15977"
-         style="fill:#b3b3b3;fill-opacity:1;stroke:none" />
-      <rect
-         ry="1.1822907"
-         y="1029.6111"
-         x="40.833721"
-         height="4.4198985"
-         width="59.787262"
-         id="rect15979"
-         style="fill:#b3b3b3;fill-opacity:1;stroke:none" />
-      <rect
-         style="fill:#e6e6e6;fill-opacity:1;stroke:none"
-         id="rect15981"
-         width="59.787262"
-         height="4.4198985"
-         x="40.833721"
-         y="944.92035"
-         ry="1.1822907" />
-      <rect
-         style="fill:#e6e6e6;fill-opacity:1;stroke:none"
-         id="rect15983"
-         width="59.787262"
-         height="4.4198985"
-         x="40.833721"
-         y="954.35303"
-         ry="1.1822907" />
+         ry="6.0862489"
+         y="931.55127"
+         x="19.18972"
+         height="113.86665"
+         width="90.002113"
+         id="rect15965"
+         style="fill:url(#linearGradient16495);fill-opacity:1;stroke:#949494;stroke-opacity:1" />
+      <g
+         transform="matrix(1.2069733,0,0,1,-20.82586,0)"
+         id="g12399">
+        <rect
+           style="fill:#b3b3b3;fill-opacity:1;stroke:none"
+           id="rect15977"
+           width="59.787262"
+           height="4.4198985"
+           x="40.833721"
+           y="1020.1784"
+           ry="1.1822907" />
+        <rect
+           style="fill:#b3b3b3;fill-opacity:1;stroke:none"
+           id="rect15979"
+           width="59.787262"
+           height="4.4198985"
+           x="40.833721"
+           y="1029.6111"
+           ry="1.1822907" />
+        <rect
+           ry="1.1822907"
+           y="944.92035"
+           x="40.833721"
+           height="4.4198985"
+           width="59.787262"
+           id="rect15981"
+           style="fill:#e6e6e6;fill-opacity:1;stroke:none" />
+        <rect
+           ry="1.1822907"
+           y="954.35303"
+           x="40.833721"
+           height="4.4198985"
+           width="59.787262"
+           id="rect15983"
+           style="fill:#e6e6e6;fill-opacity:1;stroke:none" />
+      </g>
+      <path
+         style="overflow:visible;fill:url(#radialGradient5866);fill-opacity:1;stroke:#ff4100;stroke-width:3.00491047;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 29.259682,1010.9019 -0.101946,-18.2342 c 0.116862,-4.00387 7.353594,-3.77411 7.843744,-0.10192 l 0,18.03042 12.12215,-12.22395 c 2.97462,-2.79058 7.30163,2.10745 4.68587,4.88975 l -11.30722,12.7332 15.89123,0.1022 c 4.63556,0.6019 4.05129,8.2599 0.20365,8.5571 l -15.38189,-0.1022 11.61281,11.2054 c 2.74173,3.0695 -0.91596,8.3873 -4.99146,5.7045 l -13.03895,-12.5297 -0.10191,18.0305 c 0.46099,3.829 -7.386086,4.5523 -8.149336,0.1022 l 0.101884,-17.1136 -11.51095,11.511 c -4.052273,0.9973 -7.3788099,-1.8836 -5.806396,-5.399 l 12.224014,-11.7147 -17.6229519,0.2041 c -4.34106,-0.843 -4.235731,-7.9918 0.101942,-8.5569 l 18.0304039,-0.1022 -12.631477,-12.4278 c -2.4575759,-3.91124 1.75922,-7.87079 5.093338,-5.50078 z"
+         id="path4797"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccccccccccccccccccc" />
     </g>
-    <path
-       sodipodi:nodetypes="ccccccccccccccccccccccccc"
-       inkscape:connector-curvature="0"
-       id="path4797"
-       d="m 29.259682,1010.9019 -0.101946,-18.2342 c 0.116862,-4.00387 7.353594,-3.77411 7.843744,-0.10192 l 0,18.03042 12.12215,-12.22395 c 2.97462,-2.79058 7.30163,2.10745 4.68587,4.88975 l -11.30722,12.7332 15.89123,0.1022 c 4.63556,0.6019 4.05129,8.2599 0.20365,8.5571 l -15.38189,-0.1022 11.61281,11.2054 c 2.74173,3.0695 -0.91596,8.3873 -4.99146,5.7045 l -13.03895,-12.5297 -0.10191,18.0305 c 0.46099,3.829 -7.386086,4.5523 -8.149336,0.1022 l 0.101884,-17.1136 -11.51095,11.511 c -4.052273,0.9973 -7.3788099,-1.8836 -5.806396,-5.399 l 12.224014,-11.7147 -17.6229519,0.2041 c -4.34106,-0.843 -4.235731,-7.9918 0.101942,-8.5569 l 18.0304039,-0.1022 -12.631477,-12.4278 c -2.4575759,-3.91124 1.75922,-7.87079 5.093338,-5.50078 z"
-       style="overflow:visible;fill:url(#radialGradient5866);fill-opacity:1;stroke:#ff4100;stroke-width:3.00491047;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
   </g>
 </svg>

+ 8 - 1
main/lang/english/trad4all.inc.php

@@ -7804,4 +7804,11 @@ $SrcEmail = "Email";
 $SrcPhone = "Phone";
 $SrcPresential = "Presential";
 $TicketXCreated = "Ticket %s created";
-?>
+$ShowLinkTicketNotificationTitle = "Show ticket creation link";
+$ShowLinkTicketNotificationComment = "Show the ticket creation link to users on the right side of the portal";
+$LastSentWorkDate = "Last sent work date";
+$SSOSubclassTitle = "Single Sign On sub-class";
+$SSOSubclassComment = "To enable a Single Sign On method, you will have to create your own sub-class in main/auth/sso/ based on the default class. Indicate here the name of the sub-class. For example, if the file is sso.Drupal.class.php, indicate 'Drupal' in this field.";
+$CourseCreationSplashScreenTitle = "Course creation splash screen";
+$CourseCreationSplashScreenComment = "The course splash screen show a series of suggested options to the teacher when creating a new course. Disable it to let your teachers land directly on the course homepage.";
+?>

+ 51 - 0
main/lang/french/trad4all.inc.php

@@ -2496,6 +2496,7 @@ $TitleManipulateStudentPublication = "Éditer ce document";
 $EnterDataNewChapter = "Saisissez les informations de ce nouveau chapitre";
 $EnterDataNewModule = "Saisissez les informations de ce nouveau chapitre";
 $CreateNewStep = "Créer une nouvelle étape :";
+$TicketUpdated = "Ticket mis à jour";
 $UseAnExistingResource = "Ou utiliser une ressource existante :";
 $Position = "Position";
 $NewChapterCreated = "Le nouveau chapitre a bien été créé. Vous pouvez maintenant ajouter un nouveau chapitre ou une nouvelle étape dans celui-ci.";
@@ -7697,6 +7698,7 @@ $Translation = "Traduction";
 $IfThisTranslationExistsThisWillReplaceTheTerm = "Si ce terme a déjà été traduit, cette opération remplacera la traduction existante pour ce sous-langage.";
 $LastConnection = "Dernière connexion";
 $HisProfileIs = "Son profil est";
+$UserXWithLangXRegisteredTheSite = "L'utilisateur %s de langue %s est enregistré sur le portail";
 $YouCanAssignATutorInThisLinkX = "Vous pouvez assigner un tuteur à l'adresse suivante: %s";
 $UpdateExistingGlossaryTerms = "Mettre à jour les termes existants";
 $TermsUpdated = "Termes mis à jour";
@@ -7707,4 +7709,53 @@ $LastWork = "Dernier travail";
 $WaitingModeration = "En attente de modération";
 $WorksInSessionReport = "Travaux dans le rapport de session";
 $Files = "Fichiers";
+$AssignedTo = "Assigné à";
+$UpdatedByX = "Mis à jour par %s";
+$AssignedChangeFromXToY = "L'utilisateur responsable a été changé de %s à %s";
+$RequestConfirmation = "Demande de confirmation";
+$ChangeAssign = "Changer l'assignation";
+$ToBeAssigned = "À assigner";
+$StatusNew = "Nouveau";
+$StatusPending = "En attente";
+$StatusUnconfirmed = "Non confirmé";
+$StatusClose = "Fermé";
+$StatusForwarded = "Transféré";
+$MyTickets = "Mes tickets";
+$PriorityNormal = "Normale";
+$PriorityHigh = "Élevée";
+$PriorityLow = "Basse";
+$TicketDetail = "Détails du ticket";
+$StatusAll = "Tous";
+$StatusUnread = "Non lu";
+$StatusRead = "Lu";
+$Projects = "Projets";
+$AssignUser = "Assigner utilisateur";
+$TicketEnrollment = "Inscription";
+$TicketGeneralInformation = "Information générale";
+$TicketRequestAndPapework = "Requêtes et formalités";
+$TicketAcademicIncidence = "Incidents académiques";
+$TicketVirtualCampus = "Campus virtuel";
+$TicketOnlineEvaluation = "Évaluation en ligne";
+$TicketsAboutEnrollment = "Tickets de procédure d'inscription";
+$TicketsAboutGeneralInformation = "Tickets au sujet de l'information générale";
+$TicketsAboutRequestAndPapework = "Tickets au sujet des requêtes et formalités";
+$TicketsAboutAcademicIncidence = "Tickets au sujet des incidents académiques comme les examens, travaux pratiques, devoirs, etc.";
+$TicketsAboutVirtualCampus = "Tickets au sujet du campus virtuel";
+$TicketsAboutOnlineEvaluation = "Tickets au sujet de l'évaluation en ligne";
+$Assign = "Assigner";
+$PersonalEmail = "E-mail personnel";
+$Priority = "Priorité";
+$Source = "Source";
+$SrcPlatform = "Plate-forme";
+$SrcEmail = "E-mail";
+$SrcPhone = "Téléphone";
+$SrcPresential = "Présentiel";
+$TicketXCreated = "Ticket %s créé";
+$ShowLinkTicketNotificationTitle = "Lien de création de tickets";
+$ShowLinkTicketNotificationComment = "Afficher le lien de création de tickets sur le côté du portail.";
+$LastSentWorkDate = "Date de dernier travail envoyé";
+$SSOSubclassTitle = "Single Sign On: Sous-classe";
+$SSOSubclassComment = "Pour activer une méthode de Single Sign On, vous devrez créer une sous-classe dans main/auth/sso/ basée sur la classe par défaut. Indiquez ici le nom de la sous-classe. Par exemple, si le fichier se nomme sso.Drupal.class.php, indiquez 'Drupal' dans ce champ.";
+$CourseCreationSplashScreenTitle = "Écran d'accueil de création de cours";
+$CourseCreationSplashScreenComment = "L'écran d'accueil de création de cours montre une série d'options suggérées à l'enseignant lorsqu'il vient de créer un nouveau cours. Désactivez cette option si vous souhaitez envoyer directement les enseignants sur la page principale du cours.";
 ?>

+ 52 - 1
main/lang/spanish/trad4all.inc.php

@@ -2503,6 +2503,7 @@ $TitleManipulateStudentPublication = "Modificar la tarea actual";
 $EnterDataNewChapter = "Introduzca los datos de la sección";
 $EnterDataNewModule = "Introduzca los datos de la sección";
 $CreateNewStep = "Crear un documento :";
+$TicketUpdated = "Ticket actualizado";
 $UseAnExistingResource = "O usar un recurso ya existente :";
 $Position = "Posición";
 $NewChapterCreated = "La sección ha sido creada. Ahora puede incorporarle objetos de aprendizaje o crear otra sección";
@@ -3656,7 +3657,7 @@ $Photo = "Foto";
 $MoveFile = "Mover el archivo";
 $Filter = "Filtrar";
 $Subject = "Asunto";
-$Message = "mensaje";
+$Message = "Mensaje";
 $MoreInformation = "Mas información";
 $MakeInvisible = "Ocultar";
 $MakeVisible = "Hacer visible";
@@ -7769,6 +7770,7 @@ $Translation = "Traducción";
 $IfThisTranslationExistsThisWillReplaceTheTerm = "Si este término ha sido traducido anteriormente, esta operación remplazará su traducción para este sub-idioma.";
 $LastConnection = "Última conexión";
 $HisProfileIs = "Su perfil es";
+$UserXWithLangXRegisteredTheSite = "El usuario %s con idioma %s está registrado en el portal";
 $YouCanAssignATutorInThisLinkX = "Puede asignar un tutor siguiendo este enlace: %s";
 $UpdateExistingGlossaryTerms = "Actualizar términos existentes";
 $TermsUpdated = "Términos actualizados";
@@ -7779,4 +7781,53 @@ $LastWork = "Última tarea";
 $WaitingModeration = "Esperando moderación";
 $WorksInSessionReport = "Tareas en reporte de sesión";
 $Files = "Archivos";
+$AssignedTo = "Asignado a";
+$UpdatedByX = "Actualizado por %s";
+$AssignedChangeFromXToY = "El usuario asignado cambió de %s a %s";
+$RequestConfirmation = "Solicitud de confirmación";
+$ChangeAssign = "Cambiar asignación";
+$ToBeAssigned = "Para ser asignado";
+$StatusNew = "Nuevo";
+$StatusPending = "Pendiente";
+$StatusUnconfirmed = "Sin confirmar";
+$StatusClose = "Cerrado";
+$StatusForwarded = "Reenviado";
+$MyTickets = "Mis tickets";
+$PriorityNormal = "Normal";
+$PriorityHigh = "Alta";
+$PriorityLow = "Baja";
+$TicketDetail = "Detalles del ticket";
+$StatusAll = "Todo";
+$StatusUnread = "No leído";
+$StatusRead = "Leído";
+$Projects = "Proyectos";
+$AssignUser = "Asignar usuario";
+$TicketEnrollment = "Inscripción";
+$TicketGeneralInformation = "Información general";
+$TicketRequestAndPapework = "Solicitudes y trámites";
+$TicketAcademicIncidence = "Incidentes académicos";
+$TicketVirtualCampus = "Campus virtual";
+$TicketOnlineEvaluation = "Evaluación en línea";
+$TicketsAboutEnrollment = "Tickets sobre inscripciones";
+$TicketsAboutGeneralInformation = "Tickets sobre información general";
+$TicketsAboutRequestAndPapework = "Tickets sobre solicitudes y trámites";
+$TicketsAboutAcademicIncidence = "Tickets sobre incidentes académicos, como exámenes, prácticas, tareas, etc.";
+$TicketsAboutVirtualCampus = "Tickets sobre el campus virtual";
+$TicketsAboutOnlineEvaluation = "Tickets sobre evaluaciones en línea";
+$Assign = "Asignar";
+$PersonalEmail = "Correo electrónico personal";
+$Priority = "Prioridad";
+$Source = "Fuente";
+$SrcPlatform = "Plataforma";
+$SrcEmail = "Correo electrónico";
+$SrcPhone = "Teléfono";
+$SrcPresential = "Presencial";
+$TicketXCreated = "Ticket %s creado";
+$ShowLinkTicketNotificationTitle = "Enlace de creación de ticket";
+$ShowLinkTicketNotificationComment = "Mostrar el enlace de creación de ticket en la parte lateral del portal.";
+$LastSentWorkDate = "Fecha de última tarea enviada";
+$SSOSubclassTitle = "Single Sign On: sub-clase";
+$SSOSubclassComment = "Para activar algun método de Single Sign On, es necesario definir su propia sub-clase en main/auth/sso/, basada en la clase por defecto. Indique aquí el nombre de la sub-clase. Por ejemplo, si el archivo se llama sso.Drupal.class.php, indique 'Drupal' en este campo.";
+$CourseCreationSplashScreenTitle = "Pantalla de bienvenida de curso";
+$CourseCreationSplashScreenComment = "La pantalla de bienvenida muestra una serie de sugerencias al profesor cuando acaba de crear un nuevo curso. Deactive esta opción para que el profesor llegue directamente a la pantalla principal del curso.";
 ?>

+ 2 - 2
main/lp/learnpath.class.php

@@ -8839,7 +8839,7 @@ class learnpath
         $return = '<ul class="lp_resource">';
 
         $return .= '<li class="lp_resource_element">';
-        $return .= Display::return_icon('new_test_small.gif');
+        $return .= Display::return_icon('new_exercice.png');
         $return .= '<a href="' . api_get_path(WEB_CODE_PATH) . 'exercise/exercise_admin.php?'.api_get_cidreq().'&lp_id=' . $this->lp_id . '">' .
             get_lang('NewExercise') . '</a>';
         $return .= '</li>';
@@ -9035,7 +9035,7 @@ class learnpath
 
         //First add link
         $return .= '<li class="lp_resource_element">';
-        $return .= Display::return_icon('forum_new_small.gif');
+        $return .= Display::return_icon('new_forum.png');
         $return .= Display::url(
             get_lang('CreateANewForum'),
             api_get_path(WEB_CODE_PATH) . 'forum/index.php?' . api_get_cidreq() . '&' . http_build_query([

+ 0 - 5
main/lp/lp_add_item.php

@@ -149,11 +149,6 @@ $suredel = trim(get_lang('AreYouSureToDeleteJS'));
     #resExercise .ui-selected { background: #F39814; color: white; }
     #resExercise { list-style-type: none; margin: 0; padding: 0; width: 60%; }
     #resExercise li { margin: 3px; padding: 0.4em; font-size: 1.4em; height: 18px; }
-
-    /* Fixes LP toolbar */
-    #resource_tab li a {
-        padding: 5px 4px;
-    }
 </style>
 
 <script>

+ 6 - 0
main/mySpace/myStudents.php

@@ -358,6 +358,12 @@ if (!empty($student_id)) {
             Display::return_icon('login_as.png', get_lang('LoginAs'), null, ICON_SIZE_MEDIUM).'</a>&nbsp;&nbsp;';
     }
 
+    echo Display::url(
+        Display::return_icon('skill-badges.png', get_lang('AssignSkill'), null, ICON_SIZE_MEDIUM),
+        api_get_path(WEB_CODE_PATH) . 'badge/assign.php?' . http_build_query(['user' => $student_id])
+    );
+
+
     echo '</div>';
 
     // is the user online ?

+ 3 - 1
main/template/default/layout/show_header.tpl

@@ -35,4 +35,6 @@
 {% include template ~ "/layout/page_header.tpl" %}
 <section id="content-section">
     <div class="container">
-        
+        {% block breadcrumb %}
+            {{ breadcrumb }}
+        {% endblock %}

+ 58 - 0
src/Chamilo/UserBundle/Entity/Repository/UserRepository.php

@@ -172,4 +172,62 @@ class UserRepository extends EntityRepository
 
         return $queryBuilder->getQuery()->getResult();
     }
+
+    /**
+     * Get the sessions admins for a user
+     * @param \Chamilo\UserBundle\Entity\User $user The user
+     * @return array
+     */
+    public function getSessionAdmins($user)
+    {
+        $queryBuilder = $this->createQueryBuilder('u');
+        $queryBuilder
+            ->distinct()
+            ->innerJoin(
+                'ChamiloCoreBundle:SessionRelUser',
+                'su',
+                Join::WITH,
+                $queryBuilder->expr()->eq('u', 'su.user')
+            )
+            ->innerJoin(
+                'ChamiloCoreBundle:SessionRelCourseRelUser',
+                'scu',
+                Join::WITH,
+                $queryBuilder->expr()->eq('su.session', 'scu.session')
+            )
+            ->where(
+                $queryBuilder->expr()->eq('scu.user', $user->getId())
+            )
+            ->andWhere(
+                $queryBuilder->expr()->eq('su.relationType', SESSION_RELATION_TYPE_RRHH)
+            );
+
+        return $queryBuilder->getQuery()->getResult();
+    }
+
+    /**
+     * Get the student bosses for a user
+     * @param User $user The user
+     * @return array
+     */
+    public function getStudentBosses($user)
+    {
+        $queryBuilder = $this->createQueryBuilder('u');
+        $queryBuilder
+            ->distinct()
+            ->innerJoin(
+                'ChamiloCoreBundle:UserRelUser',
+                'uu',
+                Join::WITH,
+                $queryBuilder->expr()->eq('u.id', 'uu.friendUserId')
+            )
+            ->where(
+                $queryBuilder->expr()->eq('uu.relationType', USER_RELATION_TYPE_BOSS)
+            )
+            ->andWhere(
+                $queryBuilder->expr()->eq('uu.userId', $user->getId())
+            );
+
+        return $queryBuilder->getQuery()->getResult();
+    }
 }