1/** 2 * Module Teacher Classroom (Classroom Projects) 3 * Funcionalidad principal: mostrar los projectos de la clase y realizar operaciones con ellos 4 * @description Modelo/Vista/Controlador para clase del profesor 5 * @author Alejandro Micheloud 6 */ 7 8var TeacherClassroom = function (sco) { 9 var scope = sco; 10 var _this = this; 11 var builded = false; 12 var classroom_guid = null; 13 var classroom = null; 14 var last_changestatus_operation = null; 15 var ModalProject = null; 16 var ModalArchivedProject = null; 17 var ModalImprimibles = null; 18 var ModalEpisodes = null; 19 var project_edition = null; 20 var mStudents = null, 21 mBooks = null, 22 mBookStudents = null, 23 mGradebook = null, 24 mGlobalEduca = null; 25 var ModalClassroomSelector = null; 26 var ModalTeacherClassroomSelector = null; 27 var haveTwoOrMoreClassrooms = false; 28 var selectedProjectGuid = null; 29 var fromProjectGuid = null; 30 31 /** 32 * Se invoca cuando el módulo recibe foco 33 * @returns {undefined} 34 */ 35 function show(section) { 36 console.log("TeacherClassroom:show(" + section + ");"); 37 classroom_guid = mTeacherHome.getClassroomGuid(); 38 var first_load = false; 39 if (!builded) { 40 first_load = true; 41 build(function () { 42 showTab(section); 43 }); 44 scope = scope.find(".d-teacher-classrooms"); 45 } else { 46 showTab(section); 47 }
48 mTeacherHome.getLibraryProjectModule().setCurrentClassroomGUID(classroom_guid); 49 //mTeacherHome.getLibraryProjectModule().setCurrentBackTo(null); 50 51 if (section === "projects" || first_load) 52 getClassroom(); 53 54 scope.show(); 55 $(window).scrollTop(0); 56 } 57 58 /** 59 * Show loading 60 * @returns {undefined} 61 */ 62 function showLoading() { 63 scope.find(".d-teacher-classrooms .d-card-projects").html(getHtmlLoader()); 64 } 65 66 /** 67 * Hide loading 68 * @returns {undefined} 69 */ 70 function hideLoading() { 71 scope.find(".d-teacher-classrooms .d-card-projects .d-loader").remove(); 72 } 73 74 // pasar a un solo request que obtenga, info de clase + proyectos de clase 75 function getClassroom() { 76 console.log("TeacherClassroom:getClassroom()"); 77 //if (classroom_guid === null) 78 classroom_guid = mTeacherHome.getClassroomGuid(); 79 showLoading(); 80 $(".m-home.d-teacher .d-classroom-info").hide(); 81 mCom.ajax("classroom/" + classroom_guid, "GET", "", function (data, status) { 82 console.log("addSchool() result"); 83 if (status === "success") { 84 classroom = data; 85 mTeacherHome.setCurrentClassroom(classroom); 86 renderClassroom(); 87 } 88 }, function (err, status, msg) { 89 mToast.toast(lang.classroom_get_error, 3000); 90 }); 91 } 92 93 function switchEnabledMessage() { 94 mDiscover.showLoading(); 95 96 var data = {}; 97 data.classroom_guid = mTeacherHome.getCurrentClassroom().guid; 98 data.is_enabled_message = scope.find(".d-header-link-left input").is(":checked") ? 1 : 0; 99 mCom.ajax("classroom/set-enabled-message", "PUT", data, function (data, status) { 100 console.log("addSchool() result"); 101 if (data.is_enabled_message === 1) { 102 mToast.toast(lang.classroom_messages_chk_changeto_enabled); 103 } else { 104 mToast.toast(lang.classroom_messages_chk_changeto_disabled); 105 } 106 mDiscover.hideLoading(); 107 }, function (err, status, msg) { 108 mToast.toast(lang.classroom_messages_chk_changeto_fail, 3000); 109 mDiscover.hideLoading(); 110 }); 111 112 } 113 114 function renderClassroom() { 115 116 // set config enabled message 117 scope.find(".d-header-link-left input").prop("checked", mTeacherHome.getCurrentClassroom().is_enabled_message === 1); 118 119 // render header info of classroom 120 if (!$(".m-home.d-teacher .d-classroom-info").hasClass("hide")) { 121 $(".m-home.d-teacher .d-classroom-info .icon").show(); 122 $(".m-home.d-teacher .d-classroom-info").show(); 123 } 124 125 // set episode info 126 $(".d-module.m-home.d-teacher").removeClass("episode1 episode2"); 127 $(".d-module.m-home.d-teacher").addClass(mTeacherHome.getCurrentClassroom().episode_guid); 128 $(".header .image-top .btn.video .d-label").html(lang["view_video_" + mTeacherHome.getCurrentClassroom().episode_status]); 129 $(".header .image-top .episode-name").html(lang["admin_classroom_episodes_" + mTeacherHome.getCurrentClassroom().episode_guid + "_name"]); 130 $(".header .image-top .episode-title").html(lang["admin_classroom_episodes_" + mTeacherHome.getCurrentClassroom().episode_guid + "_title"]); 131 132 133 getProjects(); 134 } 135 136 function getProjects() { 137 138 scope.find(".d-card-projects-bg-glass").hide(); 139 scope.find(".d-card-projects").html(getHtmlLoader()); 140 141 mCom.ajax("classroom/projects/" + classroom_guid, "GET", "", function (data, status) { 142 console.log("getProjects() result"); 143 if (status === "success") { 144 renderProjects(data.projects); 145 if (data.archived_amount > 0) { 146 scope.find(".d-tab-content.projects .d-header-link").show(); 147 } else { 148 scope.find(".d-tab-content.projects .d-header-link").hide(); 149 } 150 } 151 }, function (err, status, msg) { 152 mToast.toast(lang.classroom_projects_get_error, 3000); 153 }); 154 } 155 156 function changeStatusProject(project, new_status) { 157 showLoading(); 158 console.log("changeStatusProject()"); 159 console.log(project); 160 161 var data = {}; 162 data.guid = project.guid; 163 data.new_status = new_status; 164 data.classroom_guid = mTeacherHome.getClassroomGuid(); 165 last_changestatus_operation = new_status; 166 167 mCom.ajax("project/changestatus", "PUT", data, function (data, status) { 168 console.log("changeStatusProject() result"); 169 if (status === "success") { 170 getProjects(); 171 mTeacherHome.refreshClassrooms(); 172 } 173 }, function (err, status, msg) { 174 mToast.toast(lang.classroom_projects_changestatus_error, 3000); 175 }); 176 177 } 178 179 function saveProjectInfo() { 180 var data = {}; 181 //console.log(project_edition); 182 data.guid = project_edition.project_guid;
183 data.title = $("#modal-container .d-classroom-project-form #d-classroom-project-form_title").val(); 184 data.description = $("#modal-container .d-classroom-project-form #d-classroom-project-form_description").val(); 185 console.log("saveProjectInfo()"); 186 console.log(data); 187 mDiscover.showLoading(); 188 189 mCom.ajax("project/save-info", "PUT", data, function (data, status) { 190 mDiscover.hideLoading(); 191 192 mToast.toast(lang.classroom_projects_project_info_save_successful, 3000); 193 ModalProject.hide(); 194 mTeacherHome.refreshClassrooms(); 195 mTeacherHome.getTeacherClassromProjectModule().reset(); 196 if (status === "success") 197 getProjects(); 198 }, function (err, status, msg) { 199 mDiscover.hideLoading(); 200 mToast.toast(lang.classroom_projects_project_info_save_error, 3000); 201 }); 202 } 203 function hideDropdowns() { 204 scope.find(".d-card .dropdown").hide(); 205 } 206 207 function showChangeState($card) { 208 $card.find(".d-change-status").toggle(); 209 if ($card.is(":visible")) { 210 scope.find(".d-card-projects-bg-glass").show().off("click").on("click", function () { 211 scope.find(".d-card.project .d-change-status").hide(); 212 scope.find(".d-card-projects-bg-glass").hide(); 213 }); 214 } 215 } 216 217 function shareProject(_fromProjectGuid) { 218 fromProjectGuid = _fromProjectGuid 219 mDiscover.showLoading(); 220 mCom.ajax("school-teachers-classrooms", "GET", {}, function (data, status) { 221 mDiscover.hideLoading(); 222 console.log(data); 223 if (data.length === 0) { 224 mToast.toast(lang.classroom_project_share_empty_teachers, 3000); 225 return; 226 } 227 renderTeacherClassrooms(data); 228 ModalTeacherClassroomSelector.show(); 229 }, function (err, status, msg) { 230 mToast.toast(lang.school_get_error, 3000); 231 mDiscover.hideLoading(); 232 }); 233 } 234 235 function shareDo(toClassroomGuids) { 236 console.log(`fromProjectGuid: ${fromProjectGuid} toClassroomGuids[0]: ${toClassroomGuids[0]}`); 237 mDiscover.showLoading(); 238 mCom.ajax("classroom/project/duplicate-project", "POST", { 239 classroom_project_guid: fromProjectGuid, 240 to_classroom_guids: toClassroomGuids, 241 templateName: (lang.classroom_project_share_project_name || "Copia de {PROJECT_NAME}") 242 }, function (data, status) { 243 mDiscover.hideLoading(); 244 if (status === "success") { 245 mToast.toast((lang.classroom_project_share_successful || "El caso se ha duplicado correctamente"), 3000); 246 mDiscover.openInfo(lang.classroom_project_share_disclamer_title, lang.classroom_project_share_disclamer_message); 247 } 248 249 }, function (err, status, msg) { 250 mToast.toast((lang.classroom_project_duplicate_error || "Ocurrió un problema al duplicar"), 3000); 251 mDiscover.hideLoading(); 252 }); 253 } 254 255 function duplicateProject(projectGuid) { 256 selectedProjectGuid = projectGuid; 257 ModalClassroomSelector.show(); 258 getClassrooms(); 259 } 260 function renderTeacherClassrooms(teachers) { 261 getModalSelectTeacherClassroom().find(".d-content").html(''); 262 for (var i = 0; i < teachers.length; i++) { 263 const teacher = teachers[i]; 264 getModalSelectTeacherClassroom().find(".d-content").append(getHtmlTeacherClassroomItem(teacher)); 265 } 266 getModalSelectTeacherClassroom().find(".d-content .teacher-toogle").click(function () { 267 if ($(this).hasClass("active")) { 268 $(this).removeClass("active"); 269 $(this).closest(".d-teacher").removeClass("active").find(".classrooms").hide(); 270 } else { 271 $(this).addClass("active"); 272 $(this).closest(".d-teacher").addClass("active").find(".classrooms").show(); 273 } 274 }); 275 getModalSelectTeacherClassroom().find(".d-content input[type='checkbox']").on("change", function () { 276 var checkbox = $(this); 277 if (checkbox.is(":checked")) { 278 getModalSelectTeacherClassroom().find(".d-content input[type='checkbox']").prop("checked", false); 279 checkbox.prop("checked", true); 280 } 281 }); 282 } 283 function duplicateProjectsDo(classroomGuids) { 284 mDiscover.showLoading(); 285 mCom.ajax("classroom/project/duplicate-project", "POST", { 286 classroom_project_guid: selectedProjectGuid, 287 to_classroom_guids: classroomGuids, 288 templateName: (lang.classroom_project_duplicate_template_name || "Copia de {PROJECT_NAME}") 289 }, function (data, status) { 290 mDiscover.hideLoading(); 291 if (status === "success") { 292 mToast.toast((lang.classroom_project_duplicate_successful || "El caso se ha duplicado correctamente"), 3000); 293 getProjects(); 294 } 295 296 // reload classrooms of home page 297 mTeacherHome.refreshClassrooms(); 298 299 }, function (err, status, msg) { 300 mToast.toast((lang.classroom_project_duplicate_error || "Ocurrió un problema al duplicar"), 3000); 301 mDiscover.hideLoading(); 302 }); 303 } 304 function getClassrooms() { 305 mDiscover.showLoading(); 306 getModalSelectClassrooms().find(".d-content").html(); 307 getModalSelectClassrooms().find(".btn-submit").addClass("disabled"); 308 309 mCom.ajax("classroom/teacher", "GET", "", function (data, status) { 310 console.log("getClassroomOfTeacher() result"); 311 mDiscover.hideLoading(); 312 if (status === "success") { 313 const classrooms = data.classrooms.filter(classroom => classroom.guid !== mTeacherHome.getClassroomGuid()); 314 renderClassrooms(classrooms); 315 console.log(`classrooms.length: ${classrooms.length}`) 316 if (classrooms.length > 0) { 317 haveTwoOrMoreClassrooms = true; 318 } 319 } 320 }, function (err, status, msg) { 321 hideLoading(); 322 mToast.toast(lang.school_get_error, 3000); 323 }); 324 } 325 326 function renderClassrooms(data) { 327 console.log(data); 328 getModalSelectClassrooms().find(".btn-submit").removeClass("disabled"); 329 getModalSelectClassrooms().find(".d-content").html(''); 330 if (data.length === 0) { 331 // message + link 332 // getModalSelectClassrooms().find(".d-content").append(getHtmlClassroomHelp()); 333 getModalSelectClassrooms().find(".d-content .d-message a").click(function () { 334 ModalClassroomSelector.hide(); 335 routie("#teacher/home"); 336 }); 337 // disable buttons
338 getModalSelectClassrooms().find(".modal-footer").hide(); 339 } else { 340 // enable buttons 341 getModalSelectClassrooms().find(".modal-footer").show(); 342 for (var i = 0; i < data.length; i++) { 343 getModalSelectClassrooms().find(".d-content").append(getHtmlClassroomItem(data[i])).find(".d-classroom").last().data(data[i]); 344 } 345 } 346 } 347 348 function renderProjects(data) { 349 // render project cards 350 scope.find(".d-card-projects").html(""); 351 var amountProjects = data.length; 352 for (var i = 0; i < amountProjects; i++) { 353 var project = data[i]; 354 scope.find(".d-card-projects") 355 .append(getHtmlProject(project)) 356 .find(".d-card.project") 357 .last().data(project) 358 .append(getHtmlCardMenu(project)) 359 .find(".actions .btn-config").click( 360 function (e) { 361 e.preventDefault(); 362 hideDropdowns(); 363 var $dd = $(this).closest(".d-card").find(".dropdown"); 364 $dd.toggle(); 365 }); 366 var $card = scope.find(".d-card-projects .d-card.project").last(); 367 368 // click card 369 $card.click(function (e) { 370 //console.log("CLICK CARD"); 371 //console.log($(e.target).attr("class")); 372 //console.log("1: " + $(e.target).hasClass("project") + " 2: " + $(e.target).hasClass("d-card")); 373 if ($(e.target).hasClass("project") && $(e.target).hasClass("d-card")) { 374 var project = $(this).data(); 375 routie("teacher/classroom/" + classroom_guid + "/" + project.project_guid + "/" + project.guid + "/activity"); 376 } 377 }); 378 379 // click change state 380 $card.find(".d-header .label").click(function () { 381 showChangeState($(this).closest(".d-card")); 382 }); 383 384 // end project diploma 385 if (project.status === "finished") { 386 $card.find(".d-print-area-btn").click(function (e) { 387 e.preventDefault(); 388 var project = $(this).closest(".d-card").data(); 389 window.open(config.api + "teacher/pdf/" + mDiscover.getSession() + "/" + project.guid + "/diploma.pdf", "_blank"); 390 }); 391 } 392 393 // click tasks, tests, trofeos 394 $card.find(".d-footer *").click(function () { 395 var project = $(this).closest(".d-card.project").data(); 396 routie("teacher/classroom/" + classroom_guid + "/" + project.project_guid + "/" + project.guid + "/activity"); 397 }); 398 399 if ($card.hasClass("current")) { 400 mTooltip.setTooltip($card.find(".d-body .d-points, .d-body .d-points-label, .d-body .d-points-next, .d-body .d-points-next-label"), lang.home_teacher_classrooms_investigated_tooltip); 401 mTooltip.setTooltip($card.find(".d-body .d-label-research, .progress-bar-container-1"), lang.home_teacher_classrooms_investigated_tooltip); 402 mTooltip.setTooltip($card.find(".d-body .d-label-resolved, .progress-bar-container-2"), lang.home_teacher_classrooms_resolved_tooltip); 403 } 404 // contextual events 405 scope.find(".d-card-projects .d-card .dropdown." + project.project_guid + " li").click(function () { 406 var action = $(this).find("a").first().attr("action"); 407 var project = $(this).closest(".d-card").data(); 408 console.log("project.title: " + project.title + " (" + project.project_guid + ") " + action); 409 switch (action) { 410 case "open": 411 routie("teacher/classroom/" + classroom_guid + "/" + project.project_guid + "/" + project.guid + "/activity"); 412 break; 413 case "activate": 414 changeStatusProject(project, "active"); 415 break; 416 case "finish": 417 changeStatusProject(project, "finished"); 418 break; 419 case "archive": 420 archiveClassroomProject(project); 421 break; 422 case "change-state": 423 showChangeState($(this).closest(".d-card")); 424 break; 425 case "edit": 426 project_edition = project; 427 console.log(project);
428 $("#modal-container .d-classroom-project-form #d-classroom-project-form_title").val(project.title); 429 $("#modal-container .d-classroom-project-form #d-classroom-project-form_description").val(project.description); 430 $("#modal-container .d-classroom-project-form .d-icon").attr("style", "background-image:url(" + project.icon + "?t=" + new Date().getTime() + ")"); 431 ModalProject.show(); 432 break; 433 case "duplicate": 434 duplicateProject(project.guid); 435 break; 436 case "share": 437 shareProject(project.guid); 438 break; 439 } 440 }); 441 if (project.status === "active") { 442 // progress bars 443 // Investigado 444 if ($card.find(".progress-bar-container-1 .progress-bar").length > 0) { 445 var bar1 = new ProgressBar.Circle($card.find(".progress-bar-container-1 .progress-bar")[0], { 446 strokeWidth: 7, 447 color: '#77d047', 448 trailColor: '#000', 449 trailWidth: 7, 450 easing: 'easeInOut', 451 duration: 1400, 452 svgStyle: null, 453 text: { 454 value: '', 455 alignToBottom: true 456 }, 457 from: { color: '#1ba40d' }, 458 to: { color: '#77d047' }, 459 // Set default step function for all animate calls 460 step: function (state, bar) { 461 bar.path.setAttribute('stroke', state.color); 462 setProgressValue(state, bar); 463 bar.text.style.color = state.color; 464 } 465 } 466 ); 467 bar1.animate(project.amount_investigated); // Number from 0.0 to 1.0 468 } 469 // resuelto 470 if ($card.find(".progress-bar-container-2 .progress-bar").length > 0) { 471 var bar2 = new ProgressBar.Circle($card.find(".progress-bar-container-2 .progress-bar")[0], { 472 strokeWidth: 7, 473 color: '#77d047', 474 trailColor: '#000', 475 trailWidth: 7, 476 easing: 'easeInOut', 477 duration: 1400, 478 svgStyle: null, 479 text: { 480 value: '', 481 alignToBottom: true 482 }, 483 from: { color: '#1ba40d' }, 484 to: { color: '#77d047' }, 485 // Set default step function for all animate calls 486 step: function (state, bar) { 487 bar.path.setAttribute('stroke', state.color); 488 setProgressValue(state, bar); 489 bar.text.style.color = state.color; 490 } 491 } 492 ); 493 bar2.animate(project.amount_resolved); // Number from 0.0 to 1.0 494 } 495 496 497 } 498 } 499 500 // new project 501 if (amountProjects === 0) { 502 scope.find(".d-card-projects").append(getHtmlNewProject()); 503 } else { 504 scope.find(".d-card-projects").append(getHtmlFixedButton()); 505 } 506 scope.find(".d-card-projects .d-card.new, .d-card-projects .fixed-btn-add").click(function () {
507 mTeacherHome.getLibraryProjectModule().setCurrentClassroomGUID(classroom_guid); 508 routie("teacher/library-projects"); 509 }); 510 511 // comportamientos 512 513 514 515 // unboarding d-add-project 516 // alert(scope.find(".d-card.project.new .btn-add-project").is(":visible")); 517 if (!mUnboarding.isViewed("TeacherClassroomProject") && scope.find(".d-card.project.new .btn-add-project").is(":visible")) { 518 //$("body").scrollTop(scope.find(".d-card.project.new .btn-add-project").offset().top); 519 mUnboarding.show("TeacherClassroomProject", scope.find(".d-card.project.new .btn-add-project"), "left"); 520 } 521 522 523 // access to classroom project 524 scope.find(".d-card-projects .d-card.project .project-title").click(function () { 525 var project = $(this).closest(".d-card").data(); 526 routie("teacher/classroom/" + classroom_guid + "/" + project.project_guid + "/" + project.guid + "/activity"); 527 }); 528 529 // book access 530 scope.find(".d-card-projects .d-card.project .d-body .icon").click(function () { 531 var project = $(this).closest(".d-card").data(); 532 console.log(project); 533 var is_book = false; 534 if (project.hasOwnProperty("original_project")) { 535 if (isNaN(parseInt(project.original_project.guid))) { 536 // is not integer 537 } else { 538 is_book = true; 539 var url_quiosco = mDiscover.getUrlQuiosco() + "i2c/book/open?book_id=" + project.original_project.guid + "&session_id=" + mDiscover.getSession() 540 + "&book_lang=" + String(project.original_project.lang_id).toLowerCase(); 541 console.log(url_quiosco); 542 window.open(url_quiosco, "_blank"); 543 } 544 } 545 if (!is_book) { 546 routie("teacher/classroom/" + classroom_guid + "/" + project.project_guid + "/" + project.guid + "/activity"); 547 } 548 }); 549 550 // diploma 551 scope.find(".d-card-projects .d-card.project .d-diploma-btn").click(availableSoon); 552 scope.find(".d-card-projects .d-card.project .d-print-btn").click(availableSoon); 553 554 // changestatus 555 scope.find(".d-card-projects .d-card.project .d-change-status .d-btn").click(function () { 556 console.log($(this).attr("status")); 557 var project = $(this).closest(".d-card").data(); 558 console.log(project); 559 changeStatusProject(project, $(this).attr("status")); 560 }); 561 scope.find(".d-card-projects .d-card.project .d-changestatus-btn-cancel").click(function () { 562 $(this).closest(".d-change-status").toggle(); 563 }); 564 } 565 566 function removeClassroomProject(project) { 567 var body_msg = lang.classroom_project_confirm_remove_body; 568 body_msg = body_msg.split("#1").join(project.title); 569 570 mDiscover.openConfirm(lang.classroom_project_confirm_remove_title, body_msg, function (response) { 571 if (response) { 572 mDiscover.showLoading(); 573 mCom.ajax("classroom/project/" + project.guid, "DELETE", null, function (data, status) { 574 mDiscover.hideLoading(); 575 if (status === "success") { 576 mToast.toast(lang.classroom_project_remove_successful, 3000); 577 getProjects(); 578 } 579 }, function (err, status, msg) { 580 mToast.toast(lang.classroom_project_remove_error, 3000); 581 mDiscover.hideLoading(); 582 }); 583 } 584 }); 585 } 586 function archiveClassroomProject(project) { 587 var body_msg = lang.classroom_project_confirm_archive_body; 588 body_msg = body_msg.split("#1").join(project.title); 589 590 mDiscover.openConfirm(lang.classroom_project_confirm_archive_title, body_msg, function (response) { 591 if (response) { 592 mDiscover.showLoading(); 593 mCom.ajax("classroom/project/archive", "PUT", { classroom_project_guid: project.guid }, function (data, status) { 594 mDiscover.hideLoading(); 595 if (status === "success") { 596 mToast.toast(lang.classroom_project_archive_successful, 3000); 597 getProjects(); 598 } 599 600 // reload classrooms of home page 601 mTeacherHome.refreshClassrooms(); 602 603 }, function (err, status, msg) { 604 mToast.toast(lang.classroom_project_archive_error, 3000); 605 mDiscover.hideLoading(); 606 }); 607 } 608 }); 609 } 610 function showTab(section) { 611 //if (section === "results" || section === "students") { 612 613 console.log("showTab:section:" + section); 614 615 $(".d-module .header .d-header-section.project-tab.classroom .d-tab-bt").removeClass("active"); 616 $(".d-module .header .d-header-section.project-tab.classroom .d-tab-bt[section='" + section + "']").addClass("active"); 617 scope.find(".d-tab-content").hide(); 618 scope.find(".d-tab-content." + section).show(); 619 620 getClassrooms(); 621 622 switch (section) { 623 case "projects": 624 $("body").removeClass("showing-modal"); 625 mDiscover.headerMode("header-sticky"); 626 break; 627 case "books": 628 $("body").removeClass("showing-modal"); 629 mDiscover.headerMode("header-sticky"); 630 mBooks.show(); 631 break; 632 case "book-students": 633 $("body").removeClass("showing-modal"); 634 mDiscover.headerMode("header-retracted header-only-back header-fixed"); 635 mBookStudents.show(); 636 break; 637 case "students": 638 $("body").removeClass("showing-modal"); 639 mDiscover.headerMode("header-sticky"); 640 mStudents.show(); 641 break; 642 case "gradebook": 643 $("body").addClass("showing-modal"); 644 mDiscover.headerMode("header-retracted header-fixed"); 645 mGradebook.show(); 646 break; 647 case "globaleduca": 648 $("body").addClass("showing-modal"); 649 mDiscover.headerMode("header-retracted header-fixed"); 650 mGlobalEduca.show(); 651 break; 652 } 653 } 654 function openEpisodes() { 655 var episodes = mTeacherHome.getCurrentClassroom().episodes; 656 var amount_episodes = episodes.length; 657 658 // HABILITAR CUANDO HAYA NUEVO EPISODIO Y SOLAMENTE EN ALGUNOS IDIOMAS 659 660 //var amount_episodes = 3; 661 662 // Episodio 4 - restricción para algunos idiomas 663 //if( userLang == "mx" || userLang == "es" || userLang == "ar" || userLang == "gl" || userLang == "ca" || userLang == "va" ){ 664 // amount_episodes = episodes.length; 665 //} 666 667 var episode_status = "start"; 668 var current = 0; 669 670 getModalEpisodes().find(".btn-bitmap.next").off("click").on("click", function () { 671 current++; 672 if (current >
672= amount_episodes) { 673 current = 0; 674 } 675 renderEpisode(); 676 }); 677 678 getModalEpisodes().find(".btn-bitmap.prev").off("click").on("click", function () { 679 current--; 680 if (current < 0) { 681 current = amount_episodes - 1; 682 } 683 renderEpisode(); 684 }); 685 686 // episode_status 687 getModalEpisodes().find("input[type='checkbox']").off("change").on("change", function () { 688 console.log("changed! " + $(this).val()); 689 episode_status = $(this).val(); 690 getModalEpisodes().find("input[type='checkbox']").prop("checked", false); 691 $(this).prop("checked", true); 692 }); 693 694 // next step 695 getModalEpisodes().find(".btn-submit").off("click").on("click", function () { 696 setEpisode(); 697 }); 698 699 // episodes videos 700 getModalEpisodes().find(".episode-video.start .episode-video-image").click(playVideoStart); 701 getModalEpisodes().find(".episode-video.end .episode-video-image").click(playVideoEnd); 702 703 function renderEpisode() { 704 getModalEpisodes().find(".episode-number").html(String(lang.admin_classroom_episodes_episode).split("#NUMBER#").join((current + 1))); 705 try { 706 getModalEpisodes().find(".episode-name").html(lang["admin_classroom_episodes_episode" + (current + 1) + "_title"]); 707 getModalEpisodes().find(".episode-description").html(lang["admin_classroom_episodes_episode" + (current + 1) + "_description"]); 708 getModalEpisodes().find(".episode-videos").removeClass('episode-videos-type-1 episode-videos-type-2 episode-videos-type-3 episode-videos-type-4').addClass('episode-videos-type-' + (current + 1)); 709 } catch (e) { 710 console.log(e); 711 } 712 getModalEpisodes().find(".episode-nav .d-nav").removeClass("active"); 713 getModalEpisodes().find(".episode-nav .d-nav[guid='" + episodes[current].guid + "']").addClass("active"); 714 715 // caso especial por falta de vÃdeo final en episodio 2 716 /*if (episodes[current].guid === "episode2") { 717 getModalEpisodes().find(".episode-video.end").hide(); 718 getModalEpisodes().find(".episode-video.start input[type='checkbox']").click(); 719 } else { 720 getModalEpisodes().find(".episode-video.end").show(); 721 }*/ 722 723 // caso especial por falta de vÃdeo final en episodio 4 724 if (episodes[current].guid === "episode4") { 725 //getModalEpisodes().find(".episode-video.end").hide(); 726 //getModalEpisodes().find(".episode-video.end").addClass('egreyscall'); 727 //getModalEpisodes().find(".episode-video.start input[type='checkbox']").click(); 728 } else { 729 } 730 getModalEpisodes().find(".episode-video.end").removeClass('egreyscall'); 731 getModalEpisodes().find(".episode-video.end").show(); 732 } 733 function setEpisode() { 734 mDiscover.showLoading(); 735 var data = {}; 736 data.episode_guid = episodes[current].guid; 737 data.episode_status = episode_status; 738 data.classroom_guid = classroom.guid; 739 mCom.ajax("classroom/episode", "PUT", data, function (data) { 740 mToast.toast(lang.admin_classroom_episodes_modal_save_ok, 6000); 741 setTimeout(function () { 742 location.reload(); 743 }, 1000); 744 mDiscover.hideLoading(); 745 }, function (err, status, msg) { 746 mDiscover.hideLoading(); 747 mToast.toast("Problemas recuperando episodios", 3000); 748 }); 749 } 750 function playVideoStart() { 751 for (var i = 0; i < episodes[current].videos.length; i++) { 752 if (episodes[current].videos[i].lang_id === userLang) { 753 mDiscover.showVideo(episodes[current].videos[i].video_url_start); 754 } 755 } 756 } 757 function playVideoEnd() { 758 for (var i = 0; i < episodes[current].videos.length; i++) { 759 if (episodes[current].videos[i].lang_id === userLang) { 760 mDiscover.showVideo(episodes[current].videos[i].video_url_end); 761 } 762 } 763 } 764 765 766 // set current episode and status 767 var classroom = mTeacherHome.getCurrentClassroom(); 768 //console.log(classroom); 769 for (var i = 0; i < episodes.length; i++) { 770 console.log(episodes[i].guid + " - " + classroom.episode_guid); 771 if (episodes[i].guid === classroom.episode_guid) { 772 current = i; 773 } 774 } 775 //console.log("current: " + current); 776 if (classroom.episode_status === "start") { 777 getModalEpisodes().find("input[value='start']").click(); 778 } else { 779 getModalEpisodes().find("input[value='end']").click(); 780 } 781 782 renderEpisode(); 783 ModalEpisodes.show(); 784 785 getModalEpisodes().find(".btn-submit").off("click").on("click", function () { 786 setEpisode(); 787 }); 788 } 789 /** 790 * Constructor de módulo 791 * @returns {undefined} 792 */ 793 function build(callback) { 794 795 builded = true; 796 797 // esqueleto de sección 798 scope.append(getHtmlSection()); 799 800 // Modal Edit Project
801 $("#modal-container .d-classroom-project-form").remove(); 802 $("#modal-container").append(getHtmlModalProject()); 803 ModalProject = new Modal($("#modal-container .d-classroom-project-form")); 804 // modal close-btn 805 $("#modal-container .d-classroom-project-form .btn.btn-cancelar").click(function () { 806 ModalProject.hide(); 807 }); 808 // modal close-btn 809 $("#modal-container .d-classroom-project-form .d-header .d-close").click(function () { 810 ModalProject.hide(); 811 }); 812 $("#modal-container .d-classroom-project-form .btn.btn-submit").click(saveProjectInfo); 813 814 // icon image click 815 $("#modal-container .d-classroom-project-form .btn-choose-image").click(function () { 816 //$('#modal-container #project-edition-icon-file').trigger('click'); 817 818 var avatar = (project_edition.icon !== "" && project_edition.icon !== null) ? project_edition.icon : "css/img/ico-add-image.png"; 819 mAvatarProject.show({ type: "project", guid: project_edition.project_guid }, (avatar + "?t=" + new Date().getTime()), function (err, data) { 820 if (!err) { 821 if (data !== null) { 822 $("#modal-container .d-classroom-project-form .d-icon").attr("style", "background-image:url(" + data.filename_icon + "?t=" + new Date().getTime() + ")"); 823 scope.find(".d-card[ref='" + project_edition.project_guid + "'] .d-body .icon").attr("style", 'background-image:url(' + data.filename_icon + '?t=' + new Date().getTime() + '); '); 824 mAvatarProject.hide(); 825 } 826 } 827 }); 828 829 }); 830 831 // header tab control 832 $(".d-module .header .d-header-section.project-tab.classroom .d-tab-bt").click(function () { 833 var section = $(this).attr("section"); 834 routie("teacher/classroom/" + classroom_guid + "/" + section); 835 }); 836 837 838 // MODAL ARCHIVED PROJECT 839 $("#modal-container .d-modal-classroom-project-archived").remove(); 840 $("#modal-container").append(getHtmlModalArchived()); 841 ModalArchivedProject = new Modal(getModalArchived()); 842 843 scope.find(".d-header-link .archived-projects").click(getArchivedProjects); 844 getModalArchived().find(".btn-close").click(function () { 845 ModalArchivedProject.hide(); 846 }); 847 848 // MODAL IMPRIMIBLES 849 $("#modal-container .d-modal-classroom-imprimibles").remove(); 850 $("#modal-container").append(getHtmlModalImprimibles()); 851 ModalImprimibles = new Modal(getModalImprimibles()); 852 853 // MODAL EPISODES 854 $("#modal-container .d-modal-classroom-episodes").remove(); 855 $("#modal-container").append(getHtmlModalEpisodes()); 856 ModalEpisodes = new Modal(getModalEpisodes()); 857 858 // PDI 859 /* 860 $(".d-header .image-top .btn-pdi").click(function () { 861 routie("teacher/pdi/" + mTeacherHome.getClassroomGuid()); 862 }); 863 */ 864 865 $(".d-header .h-green.t-quizz").off("click").on("click", function () { 866 routie("teacher/pdi/" + mTeacherHome.getClassroomGuid()); 867 }); 868 869 870 // imprimibles 871 $(".d-header .h-green.imprimibles").off("click").on("click", function () { 872 ModalImprimibles.show(); 873 }); 874 getModalImprimibles().find(".btn-submit").click(function () { 875 ModalImprimibles.hide(); 876 }); 877 878 // config episodes 879 $(".d-header .image-center .btn-config").off("click").on("click", function () { 880 openEpisodes(); 881 }); 882 getModalEpisodes().find(".btn-discard").click(function () { 883 ModalEpisodes.hide(); 884 }); 885 886 // switch comments 887 mTooltip.setTooltip(scope.find(".d-header-link-left"), lang.classroom_messages_chk_help); 888 scope.find(".d-header-link-left input").off("click").on("click", function () { 889 switchEnabledMessage(); 890 }); 891 892 893 // header PDF buttons 894 getModalImprimibles().find(".btn-agencia").off("click").on("click", function () { 895 window.open(config.api + "classroom/pdf/" + mDiscover.getSession() + "/" + mTeacherHome.getClassroomGuid() + "/cartel-agencia.pdf", "_blank"); 896 });
897 getModalImprimibles().find(".btn-detectives").off("click").on("click", function () { 898 window.open(config.api + "classroom/pdf/" + mDiscover.getSession() + "/" + mTeacherHome.getClassroomGuid() + "/orla.pdf", "_blank"); 899 }); 900 getModalImprimibles().find(".btn-carnet-detectives").off("click").on("click", function () { 901 window.open(config.api + "classroom/pdf/" + mDiscover.getSession() + "/" + mTeacherHome.getClassroomGuid() + "/carnets.pdf", "_blank"); 902 }); 903 getModalImprimibles().find(".btn-decalogo").off("click").on("click", function () { 904 window.open(config.api + "classroom/pdf/" + mDiscover.getSession() + "/" + mTeacherHome.getClassroomGuid() + "/decalogo.pdf", "_blank"); 905 }); 906 getModalImprimibles().find(".btn-fichas-de-lectura").off("click").on("click", function () { 907 var url = "printables/fichas-de-lectura/fichas_tatum_imp_spa.pdf"; 908 switch (userLang) { 909 case "ca": 910 url = "printables/fichas-de-lectura/fichas_tatum_imp_cat.pdf"; 911 break; 912 case "eu": 913 url = "printables/fichas-de-lectura/fichas_tatum_imp_eus.pdf"; 914 break; 915 case "va": 916 url = "printables/fichas-de-lectura/fichas_tatum_imp_val.pdf"; 917 break; 918 case "gl": 919 url = "printables/fichas-de-lectura/fichas_tatum_imp_gal.pdf"; 920 break; 921 case "ar": 922 url = "printables/fichas-de-lectura/fichas_tatum_imp_arg.pdf"; 923 break; 924 case "mx": 925 url = "printables/fichas-de-lectura/fichas_tatum_imp_mx.pdf"; 926 break; 927 } 928 download_file(url, url.replace(/^.*[\\\/]/, '')); 929 }); 930 getModalImprimibles().find(".btn-fichas-de-privilegio").off("click").on("click", function () { 931 var url = "printables/vales-de-privilegio/vales-priv-ta-tum_spa.pdf"; 932 switch (userLang) { 933 case "ca": 934 url = "printables/vales-de-privilegio/vales-priv-ta-tum_cat.pdf"; 935 break; 936 case "eu": 937 url = "printables/vales-de-privilegio/vales-priv-ta-tum_eus.pdf"; 938 break; 939 case "va": 940 url = "printables/vales-de-privilegio/vales-priv-ta-tum_val.pdf"; 941 break; 942 case "gl": 943 url = "printables/vales-de-privilegio/vales-priv-ta-tum_gal.pdf"; 944 break; 945 case "ar": 946 url = "printables/vales-de-privilegio/vales-priv-ta-tum_arg.pdf"; 947 break; 948 case "mx": 949 url = "printables/vales-de-privilegio/vales-priv-ta-tum_mx.pdf"; 950 break; 951 } 952 download_file(url, url.replace(/^.*[\\\/]/, '')); 953 }); 954 955 956 // Teacher Classroom Student 957 mStudents = new TeacherClassroomStudents(scope.find(".d-teacher-classrooms .d-tab-content.students")); 958 959 // Teacher Classroom Books 960 mBooks = new TeacherClassroomBooks(scope.find(".d-teacher-classrooms .d-tab-content.books")); 961 962 // Teacher Classroom Book Students 963 mBookStudents = new TeacherClassroomBookStudents(scope.find(".d-teacher-classrooms .d-tab-content.book-students")); 964 965 // Teacher Classroom Gradebook 966 mGradebook = new TeacherClassroomGradebook(scope.find(".d-teacher-classrooms .d-tab-content.gradebook")); 967 968 // Teacher Classroom Global Educa 969 mGlobalEduca = new TeacherClassroomGlobaleduca(scope.find(".d-teacher-classrooms .d-tab-content.globaleduca")); 970 971 // modal select classrooms 972 $("#modal-container .select-classroom-2").remove(); 973 $("#modal-container").append(getHtmlClassroomsModal()); 974 ModalClassroomSelector = new Modal($("#modal-container .select-classroom-2")); 975 getModalSelectClassrooms().find(".btn-cancelar").click(function () { 976 ModalClassroomSelector.hide(); 977 }); 978 // Modal classroom selector, btn añadir a clase
979 getModalSelectClassrooms().find(".modal-footer .btn-submit").click(function () { 980 if (getModalSelectClassrooms().find(".d-content input[type='checkbox']:checked").length > 0) { 981 var selected_classrooms_ar = []; 982 getModalSelectClassrooms().find(".d-content input[type='checkbox']:checked").each(function () { 983 if ($(this).closest(".d-classroom").data().guid && $(this).closest(".d-classroom").data().guid !== null) { 984 selected_classrooms_ar.push($(this).closest(".d-classroom").data().guid); 985 } 986 }); 987 duplicateProjectsDo(selected_classrooms_ar); 988 ModalClassroomSelector.hide(); 989 } else { 990 mToast.toast(lang.library_projects_classrooms_validate_select, 3000); 991 } 992 }); 993 994 // modal select teacher/classroom 995 $("#modal-container .select-teacher-classroom").remove(); 996 $("#modal-container").append(getHtmlTeacherClassroomModal()); 997 ModalTeacherClassroomSelector = new Modal($("#modal-container .select-teacher-classroom")); 998 getModalSelectTeacherClassroom().find(".btn-cancelar").click(function () { 999 ModalTeacherClassroomSelector.hide(); 1000 }); 1001 // Modal classroom selector, btn compartir con clase 1002 getModalSelectTeacherClassroom().find(".modal-footer .btn-submit").click(function () { 1003 if (getModalSelectTeacherClassroom().find(".d-content input[type='checkbox']:checked").length > 0) { 1004 var selected_classrooms_ar = []; 1005 getModalSelectTeacherClassroom().find(".d-content input[type='checkbox']:checked").each(function () { 1006 if ($(this).closest(".d-classroom").attr("guid") && $(this).closest(".d-classroom").attr("guid") !== null) { 1007 selected_classrooms_ar.push($(this).closest(".d-classroom").attr("guid")); 1008 } 1009 }); 1010 shareDo(selected_classrooms_ar); 1011 ModalTeacherClassroomSelector.hide(); 1012 } else { 1013 mToast.toast(lang.library_projects_classrooms_validate_select, 3000); 1014 } 1015 }); 1016 1017 callback(); 1018 } 1019 function getArchivedProjects() { 1020 mDiscover.showLoading(); 1021 mCom.ajax("classroom/project/archive/" + classroom_guid, "GET", "", function (data, status) { 1022 console.log("getArchivedProjects() result"); 1023 mDiscover.hideLoading(); 1024 if (status === "success") { 1025 var html = ""; 1026 for (var i = 0; i < data.length; i++) { 1027 html += getHtmlClassroomProjectItem(data[i]); 1028 } 1029 getModalArchived().find(".d-modal-list").html(html); 1030 1031 getModalArchived().find(".d-modal-list input").off("change").on("change", function () { 1032 if (getModalArchived().find(".d-modal-list input:checked").length > 0) { 1033 getModalArchived().find(".btn-remove").removeClass("disabled"); 1034 getModalArchived().find(".btn-submit").removeClass("disabled"); 1035 } else { 1036 getModalArchived().find(".btn-remove").addClass("disabled"); 1037 getModalArchived().find(".btn-submit").addClass("disabled"); 1038 } 1039 }); 1040 1041 ModalArchivedProject.show(); 1042 1043 1044 getModalArchived().find(".btn-submit").addClass("disabled").off("click").on("click", function () { 1045 if (!$(this).hasClass("disabled")) { 1046 var cprojects_ar = []; 1047 getModalArchived().find(".d-modal-list input:checked").each(function () { 1048 cprojects_ar.push($(this).attr("value")); 1049 }); 1050 mDiscover.showLoading(); 1051 mCom.ajax("classroom/project/archived/restore", "PUT", { "cprojects_ar": cprojects_ar }, function (data, status) { 1052 console.log("getArchivedClassroomOfTeacher() result"); 1053 mDiscover.hideLoading(); 1054 if (status === "success") { 1055 mToast.toast(lang.classroom_projects_modalarchived_restore_successful, 3000); 1056 getProjects(); 1057 ModalArchivedProject.hide(); 1058 1059 1060 // reload classrooms of home page 1061 mTeacherHome.refreshClassrooms(); 1062 } 1063 }, function (err, status, msg) { 1064 mDiscover.hideLoading(); 1065 mToast.toast(lang.classroom_projects_modalarchived_restore_error, 3000); 1066 }); 1067 console.log(cprojects_ar); 1068 } 1069 }); 1070 getModalArchived().find(".btn-remove").addClass("disabled").off("
1070click").on("click", function () { 1071 if (!$(this).hasClass("disabled")) { 1072 var cprojects_ar = []; 1073 getModalArchived().find(".d-modal-list input:checked").each(function () { 1074 cprojects_ar.push($(this).attr("value")); 1075 }); 1076 mDiscover.openConfirm(lang.classroom_projects_modalarchived_confirm_title, 1077 lang.classroom_projects_modalarchived_confirm, 1078 function (response) { 1079 console.log("MODAL CONFIRM response: " + response); 1080 if (response) { 1081 mDiscover.showLoading(); 1082 mCom.ajax("classroom-project/project/archived/", "DELETE", { "cprojects_ar": cprojects_ar }, function (data, status) { 1083 console.log("delete archived projects() result"); 1084 mDiscover.hideLoading(); 1085 if (status === "success") { 1086 mToast.toast(lang.classroom_projects_modalarchived_remove_successful, 3000); 1087 getProjects(); 1088 ModalArchivedProject.hide(); 1089 1090 } 1091 }, function (err, status, msg) { 1092 mDiscover.hideLoading(); 1093 mToast.toast(lang.classroom_projects_modalarchived_remove_error, 3000); 1094 }); 1095 } 1096 }); 1097 console.log(cprojects_ar); 1098 } 1099 }); 1100 } 1101 }, function (err, status, msg) { 1102 mToast.toast(lang.classroom_projects_get_error, 3000); 1103 mDiscover.hideLoading(); 1104 }); 1105 } 1106 1107 /** 1108 * Constructor 1109 * @returns {undefined} 1110 */ 1111 function init() { 1112 // nada, latente hasta show 1113 1114 } 1115 init(); 1116 1117 // helpers 1118 function getModalSelectClassrooms() { 1119 return $("#modal-container .modal.select-classroom-2"); 1120 } 1121 function getModalSelectTeacherClassroom() { 1122 return $("#modal-container .modal.select-teacher-classroom"); 1123 } 1124 function getHtmlClassroomsModal() { 1125 return ' <div class="modal select-classroom-2">' + 1126 ' <div class="modal-content wrap-dialog-popup">' + 1127 ' <div class="modal-content">' + 1128 ' <div class="d-header">' + 1129 ' <h4>' + lang.library_projects_classrooms_title + '</h4>' + 1130 ' <h5>' + lang.library_projects_classrooms_sub_title + '</h5>' + 1131 ' </div>' + 1132 ' <div class="d-content">' + 1133 ' </div>' + 1134 ' </div>' + 1135 ' <div class="modal-footer">' + 1136 ' <a href="javascript:void(0);" class="btn dark btn-cancelar">' + lang.library_projects_classrooms_footer_btn_cancel + '</a> ' + 1137 ' <a href="javascript:void(0);" class="btn orange btn-submit">' + lang.library_projects_classrooms_footer_btn_add + '</a> ' + 1138 ' </div>' + 1139 ' </div>' + 1140 '</div>'; 1141 } 1142 function getHtmlTeacherClassroomModal() { 1143 return ' <div class="modal select-teacher-classroom">' + 1144 ' <div class="modal-content wrap-dialog-popup">' + 1145 ' <div class="modal-content">' + 1146 ' <div class="d-header">' + 1147 ' <h4>' + lang.classroom_project_share_title + '</h4>' + 1148 ' <h5>' + lang.classroom_project_share_message + '</h5>' + 1149 ' </div>' + 1150 ' <div class="d-content">' + 1151 ' </div>' + 1152 ' </div>' + 1153 ' <div class="modal-footer">' + 1154 ' <a href="javascript:void(0);" class="btn dark btn-cancelar">' + lang.classroom_project_share_discard + '</a> ' + 1155 ' <a href="javascript:void(0);" class="btn orange btn-submit">' + lang.classroom_project_share_share + '</a> ' + 1156 ' </div>' + 1157 ' </div>' + 1158 '</div>'; 1159 } 1160 function getHtmlClassroomItem(classroom) { 1161 1162 var style_img = (classroom.avatar !== "") ? 'style="background-image: url(' + classroom.avatar + ')"' : ''; 1163 var students_tx = ""; 1164 1165 var students_tx = (classroom.amount_students > 0) ? (classroom.amount_students + " " + (classroom.amount_students === 1 ? lang.classroom_info_researcher : lang.classroom_info_researchers)) : lang.classroom_info_wo_researcher; 1166 1167 return '<div class="d-classroom">' + 1168 ' <div class="icon" ' + style_img + '></div>' + 1169 ' <div class="icon-bg"></div>' + 1170 ' <div class="info">' + 1171 ' <div class="name">' + classroom.name + '</div>' + 1172 ' <div class="level">' + classroom.education_level + '</div>' + 1173 ' <div class="students">' + students_tx + '</div>' + 1174 ' </div>' + 1175 ' <div class="simple-checkbox">' + 1176 ' <input id="d-library-classroom-' + classroom.guid + '" type="checkbox" />' + 1177 ' <label for="d-library-classroom-' + classroom.guid + '"></label>' + 1178 ' </div>' + 1179 '</div>'; 1180 } 1181 function getHtmlTeacherClassroomItem(teacher) { 1182 1183 let classrooms = ''; 1184 for (let i = 0; i < teacher.classrooms.length; i++) { 1185 const classroom = teacher.classrooms[i]; 1186 classrooms += ` 1187 <div class="d-classroom" guid="${classroom.guid}"> 1188 1189 <div class="simple-checkbox"> 1190 <input id="d-teacher-classroom-${classroom.guid}" type="checkbox" /> 1191 <label for="d-teacher-classroom-${classroom.guid}"></label> 1192 </div> 1193 1194 <div class="classroom-name">${classroom.name}</div> 1195 <div class="level">${classroom.level}</div> 1196 1197 </div> 1198 `; 1199 } 1200 return `<div class="d-teacher"> 1201 <div class="info"> 1202 <div class="teacher-toogle"></div> 1203 <div class="name">${teacher.name}</div> 1204 <div class="classrooms"> 1205 ${classrooms} 1206 </div> 1207 </div> 1208 </div>`; 1209 } 1210 function getModalArchived() {
1211 return $("#modal-container .modal.d-modal-classroom-project-archived"); 1212 } 1213 function getHtmlModalArchived() { 1214 return ' <div class="modal d-modal-classroom-project-archived">' + 1215 ' <div class="modal-content wrap-dialog-popup">' + 1216 ' <div class="d-modal-header">' + 1217 ' <div class="d-modal-header-title">' + lang.classroom_projects_modalarchived_title + '</div>' + 1218 ' <div class="d-modal-header-sub-title">' + lang.classroom_projects_modalarchived_sub_title + '</div>' + 1219 ' </div>' + 1220 ' <div class="d-modal-list">' + 1221 ' </div>' + 1222 ' <div class="d-modal-footer">' + 1223 ' <a class="btn btn-close" href="javascript:void(0);">' + lang.classroom_projects_modalarchived_btn1 + '</a> ' + 1224 ' <a class="btn dark btn-remove" href="javascript:void(0);">' + lang.classroom_projects_modalarchived_btn2 + '</a>' + 1225 ' <a class="btn orange btn-submit" href="javascript:void(0);">' + lang.classroom_projects_modalarchived_btn3 + '</a>' + 1226 ' </div>' + 1227 ' </div>' + 1228 ' </div>'; 1229 } 1230 function getModalImprimibles() { 1231 return $("#modal-container .modal.d-modal-classroom-imprimibles"); 1232 } 1233 function getHtmlModalImprimibles() { 1234 return ' <div class="modal d-modal-classroom-imprimibles">' + 1235 ' <div class="modal-content wrap-dialog-popup">' + 1236 ' <div class="d-modal-header">' + 1237 ' <div class="d-modal-header-title">' + lang.classroom_projects_printables_title + '</div>' + 1238 ' <div class="d-modal-header-sub-title">' + lang.classroom_projects_printables_msg + '</div>' + 1239 ' </div>' + 1240 ' <div class="d-modal-list">' + 1241 ' <div class="btn btn-agencia"><span class="standard-text-shadow-3">' + lang.classroom_project_header_btn1 + '</span></div>' + 1242 ' <div class="btn btn-detectives"><span class="standard-text-shadow-3">' + lang.classroom_project_header_btn2 + '</span></div>' + 1243 ' <div class="btn btn-fichas-de-lectura"><span class="standard-text-shadow-3">' + lang.classroom_project_header_btn5 + '</span></div>' + 1244 ' </div>' + 1245 ' <div class="d-modal-list column-2">' + 1246 ' <div class="btn btn-decalogo"><span class="standard-text-shadow-3">' + lang.classroom_project_header_btn3 + '</span></div>' + 1247 ' <div class="btn btn-carnet-detectives"><span class="standard-text-shadow-3">' + lang.classroom_project_header_btn4 + '</span></div>' + 1248 ' <div class="btn btn-fichas-de-privilegio"><span class="standard-text-shadow-3">' + lang.classroom_project_header_btn6 + '</span></div>' + 1249 ' </div>' + 1250 ' <div class="d-modal-footer">' + 1251 ' <a class="btn orange btn-submit" href="javascript:void(0);">' + lang.classroom_projects_printables_close + '</a>' + 1252 ' </div>' + 1253 ' </div>' + 1254 ' </div>'; 1255 } 1256 function getModalEpisodes() { 1257 return $("#modal-container .modal.d-modal-classroom-episodes"); 1258 } 1259 function getHtmlModalEpisodes() { 1260 return ' <div class="modal d-modal-classroom-episodes">' + 1261 ' <div class="modal-content wrap-dialog-popup">' + 1262 ' <div class="d-container episode">' + 1263 ' <div class="episode-title">' + lang.admin_classroom_episodes + '</div>' + 1264 ' <div class="episode-nav"></div>' + 1265 ' <div class="d-episode-card">' + 1266 ' <div class="episode-number"></div>' + 1267 ' <div class="episode-name standard-text-shadow-2"></div>' + 1268 ' <div class="episode-description"></div>' + 1269 ' <div class="episode-selection-message">' + lang.admin_classroom_episodes_selection_message + '</div>' + 1270 ' <div class="episode-videos">' + 1271 ' <div class="btn-bitmap next"></div>' + 1272 ' <div class="btn-bitmap prev"></div>' + 1273 ' <div class="episode-video start">' + 1274 ' <div class="episode-video-image"></div>' + 1275 ' <div class="simple-checkbox">' + 1276 ' <input name="episode-video" id="episode-video-start" type="checkbox" checked="checked" class="" value="start" />' + 1277 ' <label for="episode-video-start">' + lang.admin_classroom_episodes_video_start + '</label>' + 1278 ' </div>' + 1279 ' </div>' + 1280 ' <div class="episode-video end">' + 1281 ' <div class="episode-video-image"></div>' + 1282 ' <div class="simple-checkbox">' + 1283 ' <input name="episode-video" id="episode-video-end" type="checkbox" class="" value="end" />' + 1284 ' <label for="episode-video-end">' + lang.admin_classroom_episodes_video_end + '</label>' + 1285 ' </div>' + 1286 ' </div>' + 1287 ' </div>' + 1288 ' </div>' + 1289 ' </div>' + 1290 ' <div class="d-modal-footer">' + 1291 ' <a class="btn btn-discard" href="javascript:void(0);">' + lang.classroom_projects_modaledit_cancel + '</a>' + 1292 ' <a class="btn orange btn-submit" href="javascript:void(0);">' + lang.admin_classroom_btn_save + '</a>' + 1293 ' </div>' + 1294 ' </div>' +
1295 ' </div>'; 1296 } 1297 function getHtmlClassroomProjectItem(project) { 1298 1299 var style_img = (project.icon !== "") ? 'style="background-image: url(' + project.icon + ')"' : ''; 1300 1301 return '<div class="d-classroom">' + 1302 ' <div class="icon" ' + style_img + '></div>' + 1303 ' <div class="icon-bg"></div>' + 1304 ' <div class="info">' + 1305 ' <div class="name">' + project.title + '</div>' + 1306 ' <div class="last-state"><span class="label"></span> <span class="value ' + project.status + '">' + lang["classroom_projects_modalarchived_status_" + project.status] + '</span></div>' + 1307 ' <div class="added-at"><span class="label">' + lang.classroom_projects_modalarchived_added_at + '</span> <span class="value">' + project.added_at + '</span></div>' + 1308 ' <div class="archived-at"><span class="label">' + lang.classroom_projects_modalarchived_archived_at + '</span> <span class="value">' + project.archived_at + '</span></div>' + 1309 ' </div>' + 1310 ' <div class="simple-checkbox">' + 1311 ' <input id="d-archived-classroom-project-' + project.guid + '" type="checkbox" value="' + project.guid + '" />' + 1312 ' <label for="d-archived-classroom-project-' + project.guid + '"></label>' + 1313 ' </div>' + 1314 '</div>'; 1315 } 1316 function getHtmlModalProject() { 1317 return ' <div class="modal d-classroom-project-form">' + 1318 ' <div class="modal-content wrap-dialog-popup">' + 1319 ' <div class="d-header">' + 1320 ' <div class="d-title standard-text-shadow-2">' + lang.classroom_projects_modaledit_title + '</div>' + 1321 ' </div>' + 1322 ' <form class="d-form">' + 1323 ' <div class="modal-content">' + 1324 ' <div class="d-content">' + 1325 ' <div class="d-content-form">' + 1326 ' <div class="d-row">' + 1327 ' <div class="label">' + lang.classroom_projects_modaledit_titleproject + '</div>' + 1328 ' <div class="input-field"><input type="text" class="d-simple-input" id="d-classroom-project-form_title" /></div>' + 1329 ' </div>' + 1330 ' <div class="d-row">' + 1331 ' <div class="label">' + lang.classroom_projects_modaledit_descriptionproject + '</div>' + 1332 ' <div class="input-field">' + 1333 ' <textarea id="d-classroom-project-form_description" class="d-simple-input"></textarea>' + 1334 ' </div>' + 1335 ' </div>' + 1336 ' </div>' + 1337 ' <div class="d-image-container">' + 1338 ' <div class="d-row">' + 1339 ' <div class="input-field btn-choose-image">' + 1340 ' <div class="d-icon"></div>' + 1341 ' <div class="d-icon-label">' + lang.classroom_projects_modaledit_iconproject1 + '</div>' + 1342 ' </div>' + 1343 ' <div class="d-upload-progress-info"></div>' + 1344 ' </div>' + 1345 ' </div>' + 1346 ' </div><!-- END d-content -->' + 1347 ' <div class="modal-footer">' + 1348 ' <a href="javascript:void(0);" class="btn btn-cancelar">' + lang.classroom_projects_modaledit_cancel + '</a> ' + 1349 ' <a href="javascript:void(0);" class="btn orange btn-submit">' + lang.classroom_projects_modaledit_publish + '</a> ' + 1350 ' </div>' + 1351 ' </form>' + 1352 ' <input type="file" id="project-edition-icon-file" accept="image/*" />' + 1353 ' </div>' + 1354 '</div>'; 1355 } 1356 function getHtmlSection() { 1357 return '<div class="d-teacher-classrooms">' + 1358 ' <div class="d-tab-content projects">' + 1359 ' <div class="d-header-link-left">' + 1360 ' <div class="simple-checkbox">' + 1361 ' <input id="chk-student-messages-enabled" type="checkbox" checked="checked" />' + 1362 ' <label for="chk-student-messages-enabled"><span class="standard-text-shadow-1">' + lang.classroom_messages_chk_label + '</span></label>' + 1363 ' </div>' + 1364 ' </div>' + 1365 ' <div class="d-header-link">' + 1366 ' <div class="btn archived-projects standard-text-shadow-1">' + lang.projects_header_btn_archived + '</div>' + 1367 ' </div>' + 1368 ' <div class="d-card-projects center-align">' + 1369 ' </div>' + 1370 ' <div class="d-card-projects-bg-glass"></div>' + 1371 ' </div>' + 1372 ' <div class="d-tab-content books">' + 1373 ' </div>' + 1374 ' <div class="d-tab-content book-students">' + 1375 ' </div>' + 1376 ' <div class="d-tab-content students">' + 1377 ' </div>' + 1378 ' <div class="d-tab-content gradebook">' + 1379 ' </div>' + 1380 ' <div class="d-tab-content globaleduca">' + 1381 ' </div>' + 1382 '</div>'; 1383 } 1384 function getHtmlNewProject() { 1385 return '<div class="d-card project new">' + 1386 ' <div class="d-body">' + 1387 ' <div class="btn btn-bitmap btn-add-project">' + lang.projects_card_label_add_case + '</div>' + 1388 ' <div class="d-info">' + lang.projects_card_label_add_case_info + '</div>' + 1389 ' <div class="d-body">' + 1390 ' <div class="disabled-label-dark d-points-label">' + lang.projects_card_label_points + '</div>' + 1391 ' <div class="disabled-label-dark d-label-research">' + lang.projects_card_label_research + '</div>' + 1392 ' <div class="disabled-label-dark d-label-resolved">' + lang.projects_card_label_resolved + '</div>' + 1393 ' </div>' + 1394 ' <div class="d-footer">' + 1395 ' <div class="disabled-label d-activity-tasks">-</div>' + 1396 ' <div class="disabled-label d-activity-tasks-label">' + lang.projects_card_label_tasks + '</div>' + 1397 ' <div class="disabled-label d-activity-tests">-</div>' + 1398 ' <div class="disabled-label d-activity-tests-label">' + lang.projects_card_label_tests + '</div>' + 1399 ' <div class="disabled-label d-activity-trophies">-</div>' + 1400 ' <div class="disabled-label d-activity-trophies-label">' + lang.projects_card_label_trophies + '</div>' + 1401 ' </div>' + 1402 ' </div>' + 1403 '</div>'; 1404 } 1405 function getHtmlFixedButton() { 1406 return ` 1407 <div class="fixed-btn-add btn btn-bitmap"> 1408 <div class="icon"></div> 1409 <div class="label">${lang.projects_card_label_add_case}</div> 1410 </div> 1411 `; 1412 } 1413 /** 1414 * 1415 * @param {object} project 1416 * @param {string} project_status ('current', 'finished', 'next') 1417 * @returns {undefined} 1418 */ 1419 function getHtmlProject(project) { 1420 var html = ""; 1421 var tasks_values = project.amount_tasks_students + '/' + (project.amount_tasks * project.amount_students); 1422 var tests_values = project.amount_tests_students + '/' + (project.amount_tests * project.amount_students); 1423 var cromos_values = project.amount_cromos_students + '/' + (project.amount_cromos * project.amount_students); 1424 switch (project.status) { 1425 case "active": 1426 html = '<div class="d-card project current" ref="' + project.project_guid + '">' + 1427 ' <div class="d-change-status">' + getHtmlChangeStatus(project) + '</div>' + 1428 ' <div class="d-header">' + 1429 ' <div class="label active btn btn-bitmap">' + lang.projects_header_label_1 + '</div>' + 1430 ' <div class="actions"><div class="btn btn-config"></div></div>' + 1431 ' <div class="project-title btn">' + project.title + '</div>' + 1432 ' </div>' + 1433 ' <div class="d-body">' + 1434 ' <div class="icon btn btn-bitmap" style="background-image:url(' + project.icon + '?t=' + new Date().getTime() + '); "></div>' + 1435 ' <div class="d-points">' + project.amount_points + '</div>' + 1436 ' <div class="d-points-label">' + lang.projects_card_label_points + '</div>' + 1437 ' <div class="d-label-research">' + lang.projects_card_label_research + '</div>' + 1438 ' <div class="d-label-resolved">' + lang.projects_card_label_resolved + '</div>' + 1439 ' <div class="progress-bars">' + 1440 ' <div class="progress-bar-container-1"><div class="progress-bar"></div></div>' + 1441 ' <div class="progress-bar-container-2"><div class="progress-bar"></div></div>' + 1442 ' </div>' + 1443 ' </div>' + 1444 ' <div class="d-footer">' + 1445 ' <div class="d-activity-clicable-area"></div>' + 1446 ' <div class="d-activity-tasks">' + tasks_values + '</div>' + 1447 ' <div class="d-activity-tasks-label">' + lang.projects_card_label_tasks + '</div>' + 1448 ' <div class="d-activity-tests">' + tests_values + '</div>' + 1449 ' <div class="d-activity-tests-label">' + lang.projects_card_label_tests + '</div>' + 1450 ' <div class="d-activity-trophies">' + cromos_values + '</div>' + 1451 ' <div class="d-activity-trophies-label">' + lang.projects_card_label_trophies + '</div>' + 1452 ' </div>' + 1453 '</div>'; 1454 break; 1455 case "finished": 1456 html = '<div class="d-card project finished">' + 1457 ' <div class="d-change-status">' + getHtmlChangeStatus(project) + '</div>' + 1458 ' <div class="d-header">' + 1459 ' <div class="label finished btn btn-bitmap">' + lang.projects_header_label_3 + '</div>' + 1460 ' <div class="actions"><div class="btn btn-config"></div></div>' + 1461 ' <div class="project-title btn">' + project.title + '</div>' + 1462 ' </div>' + 1463 ' <div class="d-body">' + 1464 ' <div class="icon btn btn-bitmap" style="background-image:url(' + project.icon + '?t=' + new Date().getTime() + ');"></div>' + 1465 ' <div class="btn d-diploma-btn">' + lang.projects_card_label_diploma + '</div>' + 1466 ' <div class="btn d-print-btn">' + lang.projects_card_label_print + '</div>' + 1467 ' <div class="btn d-print-area-btn"></div>' + 1468 ' </div>' + 1469 ' <div class="d-footer">' + 1470 ' <div class="d-activity-clicable-area"></div>' + 1471 ' <div class="d-activity-tasks">' + tasks_values + '</div>' + 1472 ' <div class="d-activity-tasks-label">' + lang.projects_card_label_tasks + '</div>' + 1473 ' <div class="d-activity-tests">' + tests_values + '</div>' + 1474 ' <div class="d-activity-tests-label">' + lang.projects_card_label_tests + '</div>' + 1475 ' <div class="d-activity-trophies">' + cromos_values + '</div>' + 1476 ' <div class="d-activity-trophies-label">' + lang.projects_card_label_trophies + '</div>' + 1477 ' </div>' + 1478 '</div>'; 1479 break; 1480 case "next": 1481 html = '<div class="d-card project next">' + 1482 ' <div class="d-change-status">' + getHtmlChangeStatus(project) + '</div>' + 1483 ' <div class="d-header">' + 1484 ' <div class="label next btn btn-bitmap">' + lang.projects_header_label_2 + '</div>' + 1485 ' <div class="actions"><div class="btn btn-config"></div></div>' + 1486 ' <div class="project-title btn">' + project.title + '</div>' + 1487 ' </div>' + 1488 ' <div class="d-body">' + 1489 ' <div class="icon btn btn-bitmap" style="background-image:url(' + project.icon + '?t=' + new Date().getTime() + ');"></div>' + 1490 ' <div class="d-points-next">' + project.amount_points + '</div>' + 1491 ' <div class="d-points-next-label">' + lang.projects_card_label_points2 + '</div>' + 1492 ' </div>' + 1493 ' <div class="d-footer">' + 1494 ' <div class="d-activity-clicable-area"></div>' + 1495 ' <div class="d-activity-tasks">' + tasks_values + '</div>' + 1496 ' <div class="d-activity-tasks-label">' + lang.projects_card_label_tasks + '</div>' + 1497 ' <div class="d-activity-tests">' + tests_values + '</div>' + 1498 ' <div class="d-activity-tests-label">' + lang.projects_card_label_tests + '</div>' + 1499 ' <div class="d-activity-trophies">' + cromos_values + '</div>' + 1500 ' <div class="d-activity-trophies-label">' + lang.projects_card_label_trophies + '</div>' + 1501 ' </div>' + 1502 '</div>'; 1503 break; 1504 } 1505 return html; 1506 } 1507 function getHtmlCardMenu(project) { 1508 var html = ""; 1509 1510 const duplicateOptionHtml = haveTwoOrMoreClassrooms ? 1511 ' <li><a href="javascript:void(0);" action="duplicate">' + (lang.classroom_project_contextual_duplicate || "Duplicar") + '</a></li>' : ''; 1512 const shareOptionHtml = 1513 ' <li><a href="javascript:void(0);" action="share">' + (lang.classroom_project_contextual_share || "Compartir.") + '</a></li>'; 1514 1515 switch (project.status) { 1516 case "active": 1517 html = '<div class="dropdown big ' + project.project_guid + '">' + 1518 '<ul class="dropdown-content">' + 1519 ' <li><a href="javascript:void(0);" action="open">' + lang.classroom_project_contextual_open + '</a></li>' + 1520 ' <li><a href="javascript:void(0);" action="edit">' + lang.classroom_project_contextual_edit + '</a></li>' + 1521 duplicateOptionHtml + 1522 shareOptionHtml + 1523 ' <li><a href="javascript:void(0);" action="archive">' + lang.classroom_project_contextual_card_remove + '</a></li>' + 1524 ' <li class="divider"></li>' + 1525 ' <li class="disabled"><a href="javascript:void(0);" action="change-state">' + lang.projects_card_changestatus_contextual + '</a></li>' + 1526 '</ul>' + 1527 '</div>'; 1528 break; 1529 case "finished": 1530 html = '<div class="dropdown big ' + project.project_guid + '">' + 1531 '<ul class="dropdown-content">' + 1532 ' <li><a href="javascript:void(0);" action="open">' + lang.classroom_project_contextual_open + '</a></li>' + 1533 ' <li><a href="javascript:void(0);" action="edit">' + lang.classroom_project_contextual_edit + '</a></li>' + 1534 duplicateOptionHtml + 1535 shareOptionHtml + 1536 ' <li><a href="javascript:void(0);" action="archive">' + lang.classroom_project_contextual_card_remove + '</a></li>' + 1537 ' <li class="divider"></li>' + 1538 ' <li class="disabled"><a href="javascript:void(0);" action="change-state">' + lang.projects_card_changestatus_contextual + '</a></li>' + 1539 '</ul>'; 1540 break; 1541 case "next": 1542 html = '<div class="dropdown big ' + project.project_guid + '">' + 1543 '<ul cl
1543ass="dropdown-content">' + 1544 ' <li><a href="javascript:void(0);" action="open">' + lang.classroom_project_contextual_open + '</a></li>' + 1545 ' <li><a href="javascript:void(0);" action="edit">' + lang.classroom_project_contextual_edit + '</a></li>' + 1546 duplicateOptionHtml + 1547 shareOptionHtml + 1548 ' <li><a href="javascript:void(0);" action="archive">' + lang.classroom_project_contextual_card_remove + '</a></li>' + 1549 ' <li class="divider"></li>' + 1550 ' <li class="disabled"><a href="javascript:void(0);" action="change-state">' + lang.projects_card_changestatus_contextual + '</a></li>' + 1551 '</ul>' + 1552 '</div>'; 1553 break; 1554 } 1555 return html; 1556 } 1557 function getHtmlChangeStatus(project) { 1558 var html = '<div class="d-changestatus-title">' + lang.projects_card_changestatus_title + '</div>'; 1559 switch (project.status) { 1560 case "active": 1561 html += '<div class="d-changestatus-status-1-msg">' + lang.projects_card_changestatus_msg_finish + '</div>' + 1562 '<div class="d-changestatus-status-1-btn btn d-btn btn-bitmap red" status="finished">' + lang.projects_card_changestatus_btn_finish + '</div>' + 1563 '<div class="d-changestatus-status-2-msg">' + lang.projects_card_changestatus_msg_next + '</div>' + 1564 '<div class="d-changestatus-status-2-btn btn d-btn btn-bitmap" status="next">' + lang.projects_card_changestatus_btn_next + '</div>'; 1565 break; 1566 case "next": 1567 html += '<div class="d-changestatus-status-1-msg">' + lang.projects_card_changestatus_msg_active + '</div>' + 1568 '<div class="d-changestatus-status-1-btn btn d-btn btn-bitmap green" status="active">' + lang.projects_card_changestatus_btn_active + '</div>' + 1569 '<div class="d-changestatus-status-2-msg">' + lang.projects_card_changestatus_msg_finish + '</div>' + 1570 '<div class="d-changestatus-status-2-btn btn d-btn btn-bitmap red" status="finished">' + lang.projects_card_changestatus_btn_finish + '</div>'; 1571 break; 1572 case "finished": 1573 html += '<div class="d-changestatus-status-1-msg">' + lang.projects_card_changestatus_msg_active + '</div>' + 1574 '<div class="d-changestatus-status-1-btn btn d-btn btn-bitmap green" status="active">' + lang.projects_card_changestatus_btn_active + '</div>' + 1575 '<div class="d-changestatus-status-2-msg">' + lang.projects_card_changestatus_msg_next + '</div>' + 1576 '<div class="d-changestatus-status-2-btn btn d-btn btn-bitmap" status="next">' + lang.projects_card_changestatus_btn_next + '</div>'; 1577 break; 1578 } 1579 //html += '<div class="d-changestatus-btn-cancel btn orange">' + lang.projects_card_changestatus_btn_cancel + '</div>'; 1580 return html; 1581 } 1582 function getHtmlLoader() { 1583 return '<div class="d-loader"><img src="css/img/loading_gears_2.gif" /></div>'; 1584 } 1585 1586 // public methods 1587 this.show = show; 1588 this.getClassroom = getClassroom; 1589} 1590 ;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.