Explorar el Código

Merge branch 'master' of https://github.com/visuddhinanda/mint

Bhikkhu-Kosalla hace 5 años
padre
commit
8761456446
Se han modificado 100 ficheros con 4213 adiciones y 138 borrados
  1. 8 0
      README.md
  2. 1 0
      app/article/my_article_post.php
  3. 3 1
      app/article/my_article_put.php
  4. 2 0
      app/article/my_collect_post.php
  5. 3 1
      app/article/my_collect_put.php
  6. 56 57
      app/collect/index.js
  7. 11 3
      app/collect/index.php
  8. 9 0
      app/course/course_list.php
  9. 34 19
      app/course/index.php
  10. 3 3
      app/course/list_new.php
  11. 1 0
      app/dict/dict_lookup.php
  12. 1425 0
      app/lib/fullcalendar/locales-all.js
  13. 0 0
      app/lib/fullcalendar/locales-all.min.js
  14. 27 0
      app/lib/fullcalendar/locales/af.js
  15. 28 0
      app/lib/fullcalendar/locales/ar-dz.js
  16. 28 0
      app/lib/fullcalendar/locales/ar-kw.js
  17. 28 0
      app/lib/fullcalendar/locales/ar-ly.js
  18. 28 0
      app/lib/fullcalendar/locales/ar-ma.js
  19. 28 0
      app/lib/fullcalendar/locales/ar-sa.js
  20. 28 0
      app/lib/fullcalendar/locales/ar-tn.js
  21. 28 0
      app/lib/fullcalendar/locales/ar.js
  22. 29 0
      app/lib/fullcalendar/locales/az.js
  23. 28 0
      app/lib/fullcalendar/locales/bg.js
  24. 29 0
      app/lib/fullcalendar/locales/bs.js
  25. 27 0
      app/lib/fullcalendar/locales/ca.js
  26. 29 0
      app/lib/fullcalendar/locales/cs.js
  27. 27 0
      app/lib/fullcalendar/locales/da.js
  28. 30 0
      app/lib/fullcalendar/locales/de.js
  29. 27 0
      app/lib/fullcalendar/locales/el.js
  30. 14 0
      app/lib/fullcalendar/locales/en-au.js
  31. 14 0
      app/lib/fullcalendar/locales/en-gb.js
  32. 14 0
      app/lib/fullcalendar/locales/en-nz.js
  33. 27 0
      app/lib/fullcalendar/locales/es-us.js
  34. 27 0
      app/lib/fullcalendar/locales/es.js
  35. 29 0
      app/lib/fullcalendar/locales/et.js
  36. 27 0
      app/lib/fullcalendar/locales/eu.js
  37. 30 0
      app/lib/fullcalendar/locales/fa.js
  38. 27 0
      app/lib/fullcalendar/locales/fi.js
  39. 24 0
      app/lib/fullcalendar/locales/fr-ca.js
  40. 28 0
      app/lib/fullcalendar/locales/fr-ch.js
  41. 28 0
      app/lib/fullcalendar/locales/fr.js
  42. 27 0
      app/lib/fullcalendar/locales/gl.js
  43. 24 0
      app/lib/fullcalendar/locales/he.js
  44. 29 0
      app/lib/fullcalendar/locales/hi.js
  45. 29 0
      app/lib/fullcalendar/locales/hr.js
  46. 27 0
      app/lib/fullcalendar/locales/hu.js
  47. 27 0
      app/lib/fullcalendar/locales/id.js
  48. 27 0
      app/lib/fullcalendar/locales/is.js
  49. 29 0
      app/lib/fullcalendar/locales/it.js
  50. 25 0
      app/lib/fullcalendar/locales/ja.js
  51. 29 0
      app/lib/fullcalendar/locales/ka.js
  52. 29 0
      app/lib/fullcalendar/locales/kk.js
  53. 23 0
      app/lib/fullcalendar/locales/ko.js
  54. 27 0
      app/lib/fullcalendar/locales/lb.js
  55. 27 0
      app/lib/fullcalendar/locales/lt.js
  56. 29 0
      app/lib/fullcalendar/locales/lv.js
  57. 25 0
      app/lib/fullcalendar/locales/mk.js
  58. 29 0
      app/lib/fullcalendar/locales/ms.js
  59. 27 0
      app/lib/fullcalendar/locales/nb.js
  60. 27 0
      app/lib/fullcalendar/locales/ne.js
  61. 27 0
      app/lib/fullcalendar/locales/nl.js
  62. 27 0
      app/lib/fullcalendar/locales/nn.js
  63. 27 0
      app/lib/fullcalendar/locales/pl.js
  64. 25 0
      app/lib/fullcalendar/locales/pt-br.js
  65. 27 0
      app/lib/fullcalendar/locales/pt.js
  66. 29 0
      app/lib/fullcalendar/locales/ro.js
  67. 29 0
      app/lib/fullcalendar/locales/ru.js
  68. 29 0
      app/lib/fullcalendar/locales/sk.js
  69. 27 0
      app/lib/fullcalendar/locales/sl.js
  70. 29 0
      app/lib/fullcalendar/locales/sq.js
  71. 29 0
      app/lib/fullcalendar/locales/sr-cyrl.js
  72. 29 0
      app/lib/fullcalendar/locales/sr.js
  73. 27 0
      app/lib/fullcalendar/locales/sv.js
  74. 30 0
      app/lib/fullcalendar/locales/th.js
  75. 27 0
      app/lib/fullcalendar/locales/tr.js
  76. 17 0
      app/lib/fullcalendar/locales/ug.js
  77. 29 0
      app/lib/fullcalendar/locales/uk.js
  78. 21 0
      app/lib/fullcalendar/locales/uz.js
  79. 29 0
      app/lib/fullcalendar/locales/vi.js
  80. 31 0
      app/lib/fullcalendar/locales/zh-cn.js
  81. 23 0
      app/lib/fullcalendar/locales/zh-tw.js
  82. 71 0
      app/lib/fullcalendar/main.css
  83. 56 0
      app/lib/fullcalendar/main.js
  84. 0 0
      app/lib/fullcalendar/main.min.css
  85. 5 0
      app/lib/fullcalendar/main.min.js
  86. 39 0
      app/lib/fullcalendar/php/get-date.php
  87. 53 0
      app/lib/fullcalendar/php/get-events.php
  88. 9 0
      app/lib/fullcalendar/php/get-time-zones.php
  89. 130 0
      app/lib/fullcalendar/php/utils.php
  90. 1 0
      app/pcdl/html_head.php
  91. 62 0
      app/pcdl/img/books.svg
  92. 127 0
      app/pcdl/img/teachers.svg
  93. 3 2
      app/pcdl/index.js
  94. 35 7
      app/pcdl/index.php
  95. 1 0
      app/search/paliword_search.php
  96. 48 45
      app/ucenter/active.php
  97. 108 0
      app/uhome/foot_step.php
  98. 82 0
      app/uhome/foot_step_data.php
  99. 2 0
      app/uhome/head.php
  100. 3 0
      app/usent/sent_post.php

+ 8 - 0
README.md

@@ -1,5 +1,13 @@
 # [PCD-Suite](https://github.com/iapt-platform/PCD-Suite)的 Rust&React 重写版
 
+## 安装
+
+```bash
+cd mint; mkdir tmp; chown -R www:www tmp
+```
+
+然后进入 http://localhost/app/install 开始安装
+
 ## 开发
 
 ### 工具

+ 1 - 0
app/article/my_article_post.php

@@ -4,6 +4,7 @@ require_once "../public/_pdo.php";
 require_once '../public/function.php';
 require_once '../hostsetting/function.php';
 require_once "../ucenter/active.php";
+add_edit_event("article",array("id"=>$_POST["id"],"action"=>"update"));
 
 $respond=array("status"=>0,"message"=>"");
 

+ 3 - 1
app/article/my_article_put.php

@@ -10,7 +10,9 @@ PDO_Connect("sqlite:"._FILE_DB_USER_ARTICLE_);
 
 $query="INSERT INTO article ( id,  title  , subtitle  , summary , content   , tag  , owner, setting  , status  , create_time , modify_time , receive_time   )  VALUES  ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? , ? ) ";
 $sth = $PDO->prepare($query);
-$sth->execute(array(UUID::v4() , $_POST["title"] , "" ,"", "" , "" , $_COOKIE["userid"] , "{}" , 1 , mTime() ,  mTime() , mTime() ));
+$uuid = UUID::v4();
+add_edit_event("article",array("id"=>$uuid,"action"=>"insert"));
+$sth->execute(array($uuid , $_POST["title"] , "" ,"", "" , "" , $_COOKIE["userid"] , "{}" , 1 , mTime() ,  mTime() , mTime() ));
 $respond=array("status"=>0,"message"=>"");
 if (!$sth || ($sth && $sth->errorCode() != 0)) {
 	$error = PDO_ErrorInfo();

+ 2 - 0
app/article/my_collect_post.php

@@ -5,6 +5,8 @@ require_once '../public/function.php';
 require_once '../hostsetting/function.php';
 require_once "../ucenter/active.php";
 
+add_edit_event("collect",array("id"=>$_POST["id"]));
+
 $respond=array("status"=>0,"message"=>"");
 
 PDO_Connect("sqlite:"._FILE_DB_USER_ARTICLE_);

+ 3 - 1
app/article/my_collect_put.php

@@ -10,7 +10,9 @@ PDO_Connect("sqlite:"._FILE_DB_USER_ARTICLE_);
 
 $query="INSERT INTO collect ( id,  title  , subtitle  , summary , article_list   , owner, lang  , status  , create_time , modify_time , receive_time   )  VALUES  ( ? , ? , ? , ?  , ? , ? , ? , ? , ? , ? , ? ) ";
 $sth = $PDO->prepare($query);
-$sth->execute(array(UUID::v4() , $_POST["title"] , "" ,"", "[]" ,  $_COOKIE["userid"] , "" , 1 , mTime() ,  mTime() , mTime() ));
+$uuid = UUID::v4();
+add_edit_event("collect",array("id"=>$uuid));
+$sth->execute(array($uuid , $_POST["title"] , "" ,"", "[]" ,  $_COOKIE["userid"] , "" , 1 , mTime() ,  mTime() , mTime() ));
 $respond=array("status"=>0,"message"=>"");
 if (!$sth || ($sth && $sth->errorCode() != 0)) {
 	$error = PDO_ErrorInfo();

+ 56 - 57
app/collect/index.js

@@ -1,62 +1,61 @@
 function collect_load(begin = 0) {
-	$.get(
-		"list.php",
-		{
-			begin: begin,
-		},
-		function (data, status) {
-			let arrCollectList = JSON.parse(data);
-			let html = "";
-			for (const iterator of arrCollectList.data) {
-				html += "<div class='card collect_card'>";
-				html += "<div class='card_state'>" + gLocal.gui.ongoing + "</div>";
-				html += "<div class='card_info'>"; //卡片信息开始
-				html += "<div class='collect_title'>";
-				html += "<a href='../article/?collect=" + iterator.id + "'>" + iterator.title + "</a>";
-				html += "</div>";
+    $.get(
+        "list.php", {
+            begin: begin,
+        },
+        function(data, status) {
+            let arrCollectList = JSON.parse(data);
+            let html = "";
+            for (const iterator of arrCollectList.data) {
+                html += "<div class='card collect_card'>";
+                html += "<div class='card_state'>" + gLocal.gui.ongoing + "</div>";
+                html += "<div class='card_info'>"; //卡片信息开始
+                html += "<div class='collect_title'>";
+                html += "<a href='../article/?collect=" + iterator.id + "'>" + iterator.title + "</a>";
+                html += "</div>";
 
-				if (iterator.subtitle && iterator.subtitle != "null") {
-					html += "<div class='subtitle'>" + iterator.subtitle + "</div>";
-				}
-				if (iterator.summary && iterator.summary != "null") {
-					html += "<div class='summary'>" + iterator.summary + "</div>";
-				}
-				if (iterator.tag) {
-					html += "<div style='overflow-wrap: anywhere;'>" + iterator.tag + "</div>";
-				}
-				html += "<div style='margin-top:10px'>" + iterator.username.nickname + "</div>";
+                if (iterator.subtitle && iterator.subtitle != "null") {
+                    html += "<div class='subtitle'>" + iterator.subtitle + "</div>";
+                }
+                if (iterator.summary && iterator.summary != "null") {
+                    html += "<div class='summary'>" + iterator.summary + "</div>";
+                }
+                if (iterator.tag) {
+                    html += "<div style='overflow-wrap: anywhere;'>" + iterator.tag + "</div>";
+                }
+                html += "<div style='margin-top:10px'>" + iterator.username.nickname + "</div>";
 
-				html += "</div>"; //卡片信息关闭
-				const article_limit = 4;
-				let article_count = 0;
-				let article_list = JSON.parse(iterator.article_list);
-				//章节预览链接
-				html += "<div class='article_title_link' >";
+                html += "</div>"; //卡片信息关闭
+                const article_limit = 4;
+                let article_count = 0;
+                let article_list = JSON.parse(iterator.article_list);
+                //章节预览链接
+                html += "<div class='article_title_list' >";
 
-				//!!!!!!請加上不同語言!!!!!
-				html += "<div style='font-weight:700;'>" + gLocal.gui.content + "</div>";
+                //!!!!!!請加上不同語言!!!!!
+                html += "<div style='font-weight:700;'>" + gLocal.gui.content + "</div>";
 
-				//章節列表
-				html += "<div>";
-				for (const article of article_list) {
-					html += "<div style='border-top: #707070 1px solid; text-overflow: ellipsis; line-height:2.2em;'>";
-					html +=
-						"<a style='color:var(--main_color);font-weight:700;' href='../article/?id=" +
-						article.article +
-						"' target='_blank'>" +
-						article.title +
-						"</a>";
-					html += "</div>";
-					article_count++;
-					if (article_count > article_limit) {
-						break;
-					}
-				}
-				html += "</div>"; //章節列表結束
-				html += "</div>"; //章节预览链接结束
-				html += "</div>"; //card内容 结束
-			}
-			$("#book_list").html(html);
-		}
-	);
-}
+                //章節列表
+                html += "<div>";
+                for (const article of article_list) {
+                    html += "<div style='padding:6px 0; border-top: #707070 1px solid;'>";
+                    html +=
+                        "<a class='article_title' style='color:var(--main_color);font-weight:700;' href='../article/?id=" +
+                        article.article +
+                        "' target='_blank'>" +
+                        article.title +
+                        "</a>";
+                    html += "</div>";
+                    article_count++;
+                    if (article_count > article_limit) {
+                        break;
+                    }
+                }
+                html += "</div>"; //章節列表結束
+                html += "</div>"; //章节预览链接结束
+                html += "</div>"; //card内容 结束
+            }
+            $("#book_list").html(html);
+        }
+    );
+}

+ 11 - 3
app/collect/index.php

@@ -80,7 +80,7 @@ include "../pcdl/html_head.php";
             fill: var(--btn-bg-color);
         }
 
-        .article_title_link {
+        .article_title_list {
             margin-top: 18px;
             display: grid;
             grid-template-columns: 80px auto;
@@ -151,6 +151,14 @@ include "../pcdl/html_head.php";
             padding: 3px 6px;
             margin: 0 5px 5px 0;
         }
+
+        .article_title {
+            text-overflow: ellipsis;
+            display: -webkit-box;
+            -webkit-box-orient: vertical;
+            overflow: hidden;
+            -webkit-line-clamp: 2;
+        }
     </style>
     <style media="screen and (min-width:800px)">
         .collect_section .section_inner {
@@ -220,7 +228,7 @@ include "../pcdl/html_head.php";
 
     <div class="search_section">
         <div style='font-size:140%;'>
-            <span style="display:inline-block;width:20em;"><input type="input" placeholder=<?php echo $_local->gui->search . ':' . $_local->gui->title . '&nbsp;OR&nbsp;' . $_local->gui->author; ?> style="background-color:var(--new-tool-input-text-bg); border:solid 1px var(--new-tool-btn-border)" /></span>
+            <span style="display:inline-block;max-width:20em;"><input type="input" placeholder=<?php echo $_local->gui->search . ':' . $_local->gui->title . '&nbsp;OR&nbsp;' . $_local->gui->author; ?> style="background-color:var(--new-tool-input-text-bg); border:solid 1px var(--new-tool-btn-border)" /></span>
             <button class="icon_btn">
                 <svg class="icon">
                     <use xlink:href="../studio/svg/icon.svg#ic_search"></use>
@@ -234,7 +242,7 @@ include "../pcdl/html_head.php";
             <div class="left_content">
                 <div style="display:flex;">
                     <h2 style="margin-right:auto">
-                        <?php echo $_local->gui->composition;?>
+                        <?php echo $_local->gui->composition; ?>
                     </h2>
                     <div level="7" class="tag_others" style="padding-bottom:5px; margin-right:5px;">
                         <select>

+ 9 - 0
app/course/course_list.php

@@ -6,6 +6,15 @@ require_once "../public/_pdo.php";
 require_once '../public/load_lang.php';
 require_once '../media/function.php';
 
+/*
+状态
+
+0 删除
+10 私有
+20 不公开列出
+30 公开连载
+40 已完结
+*/
 if(isset($_GET["teacher"])){
     $teacher = " teacher = '".$_GET["teacher"]."'";
 }

+ 34 - 19
app/course/index.php

@@ -70,40 +70,55 @@ include "../pcdl/html_head.php";
 			xDiv.innerHTML=data;
 		}
 	});
-	</script>	
-    <div class="card" style="margin:1em;">
-    过滤
-    </div>
-    <div id="course_list">
-    </div >
+	</script>
+	<div class="course_block">	
+		<div class="title" >
+		连载中
+		</div>
+		<div id="course_list_ongoing">
+		</div >
+	</div>	
+
+	<div class="course_block">	
+		<div class="title" >
+		已完结
+		</div>
+		<div id="course_list_complete">
+		</div >
+	</div>
+
     <script>
 	$.get("../course/course_list.php",function(data,status){
         let arrData = JSON.parse(data);
-        let html="";
+        let html_complete="";
+        let html_ongoing="";
+		
         for (const iterator of arrData) {
+			let html="";
             html += '<div class="card" style="display:flex;margin:1em;padding:10px;">';
-
             html += '<div style="flex:7;">';
             html +=  '<div class="title" style="padding-bottom:5px;font-size:110%;font-weight:600;"><a href="../course/course.php?id='+iterator.id+'">'+iterator.title+'</a></div>';
 			html += '<div class="summary"  style="padding-bottom:5px;">'+iterator.subtitle+'</div>';
 			let summary = "";
-        try{
-            summary = marked(iterator.summary);
-        }
-        catch(e){
-
-        }      
+			try{
+				summary = marked(iterator.summary);
+			}
+			catch(e){
+			}
             html += '<div class="summary"  style="padding-bottom:5px;">'+summary+'</div>';
-
             html += '</div>';
-
             html += '<div style="flex:3;max-width:15em;">';
-
             html += '</div>';
-
             html += '</div>';
-            $("#course_list").html(html);
+			if(iterator.status==40){
+				html_complete += html;
+			}
+			else if(iterator.status==30){
+				html_ongoing += html;
+			}
         }
+		$("#course_list_complete").html(html_complete);
+		$("#course_list_ongoing").html(html_ongoing);
 	});
 	</script>	
 

+ 3 - 3
app/course/list_new.php

@@ -16,15 +16,15 @@ foreach ($Fetch as $row) {
     echo '<div class="card_photo"></div>';
     echo '<div class="course_right">';
     echo '<div class="title"><a href="../course/course.php?id=' . $row["id"] . '">' . $row["title"] . '</a></div>';
-    echo '<div class="subtitle"  style="color:gray;">' . $row["subtitle"] . '</div>';
     echo '<div class="author">' . $_local->gui->speaker . ':';
     echo '<a href="../uhome/course.php?userid=' . $row['teacher'] . '">';
     echo ucenter_getA($row["teacher"]);
     echo '</a>';
     echo '</div>';
-    echo '<div class="summary">' . $row["summary"] . '</div>';
+    echo '<div class="subtitle">' . $row["subtitle"] . '</div>';
+    /*echo '<div class="summary">' . $row["summary"] . '</div>';*/
     echo '</div>';
-    /*
+    /*按讚數及觀看數(待定)
     echo '<div class="pd-10" style="display:flex;justify-content: space-between;">';
     echo '<button><svg t="1600445373282" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2368" width="32" height="32"><path fill="silver" d="M854.00064 412.66688h-275.99872v-35.99872c48-102.00064 35.99872-227.99872 0-288-12.00128-18.00192-35.99872-35.99872-54.00064-35.99872s-35.99872 6.00064-35.99872 54.00064c0 96-6.00064 137.99936-24.00256 179.99872-12.00128 29.99808-77.99808 96-156.00128 120.00256v480c12.00128 6.00064 35.99872 24.00256 54.00064 29.99808 18.00192 12.00128 48 18.00192 60.00128 18.00192h306.00192c77.99808 0 108.00128-29.99808 108.00128-66.00192 0-18.00192 0-29.99808-18.00192-35.99872V796.672c41.99936 0 83.99872-12.00128 83.99872-48 0-29.99808-12.00128-35.99872-18.00192-35.99872v-35.99872h6.00064c24.00256 0 60.00128-35.99872 60.00128-60.00128 0-18.00192-6.00064-35.99872-18.00192-41.99936-6.00064-6.00064-24.00256-6.00064-24.00256-6.00064v-35.99872s12.00128 0 24.00256-12.00128c18.00192-12.00128 18.00192-42.00448 18.00192-42.00448v-12.00128c0-29.99808-48-54.00064-96-54.00064zM67.99872 478.6688l35.99872 408.00256c6.00064 24.00256 24.00256 48 48 48h83.99872c6.00064 0 12.00128-6.00064 18.00192-12.00128s12.00128-6.00064 18.00192-12.00128V412.66688H128c-35.99872 0-60.00128 35.99872-60.00128 66.00192z" p-id="2369"></path></svg></button>';
     echo '<span id="num_like">3</span>';

+ 1 - 0
app/dict/dict_lookup.php

@@ -157,6 +157,7 @@ switch($op){
 		echo "</div>";
 		break;
 	case "search":
+		add_edit_event("lookup");
 		echo "<div id='dict_list_shell' onclick='setNaviVisibility()'><div id='dict_list' class='dict_list_off'></div></div>";
 		echo "<div id='dict_ref'>";	
 		$dict_list_a = [];

+ 1425 - 0
app/lib/fullcalendar/locales-all.js

@@ -0,0 +1,1425 @@
+[].push.apply(FullCalendar.globalLocales, function () {
+  'use strict';
+
+  var l0 = {
+    code: 'af',
+    week: {
+      dow: 1, // Maandag is die eerste dag van die week.
+      doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
+    },
+    buttonText: {
+      prev: 'Vorige',
+      next: 'Volgende',
+      today: 'Vandag',
+      year: 'Jaar',
+      month: 'Maand',
+      week: 'Week',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    allDayText: 'Heeldag',
+    moreLinkText: 'Addisionele',
+    noEventsText: 'Daar is geen gebeurtenisse nie',
+  };
+
+  var l1 = {
+    code: 'ar-dz',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 4, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  var l2 = {
+    code: 'ar-kw',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  var l3 = {
+    code: 'ar-ly',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  var l4 = {
+    code: 'ar-ma',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  var l5 = {
+    code: 'ar-sa',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 6, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  var l6 = {
+    code: 'ar-tn',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  var l7 = {
+    code: 'ar',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  var l8 = {
+    code: 'az',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Əvvəl',
+      next: 'Sonra',
+      today: 'Bu Gün',
+      month: 'Ay',
+      week: 'Həftə',
+      day: 'Gün',
+      list: 'Gündəm',
+    },
+    weekText: 'Həftə',
+    allDayText: 'Bütün Gün',
+    moreLinkText(n) {
+      return '+ daha çox ' + n
+    },
+    noEventsText: 'Göstərmək üçün hadisə yoxdur',
+  };
+
+  var l9 = {
+    code: 'bg',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'назад',
+      next: 'напред',
+      today: 'днес',
+      month: 'Месец',
+      week: 'Седмица',
+      day: 'Ден',
+      list: 'График',
+    },
+    allDayText: 'Цял ден',
+    moreLinkText(n) {
+      return '+още ' + n
+    },
+    noEventsText: 'Няма събития за показване',
+  };
+
+  var l10 = {
+    code: 'bs',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prošli',
+      next: 'Sljedeći',
+      today: 'Danas',
+      month: 'Mjesec',
+      week: 'Sedmica',
+      day: 'Dan',
+      list: 'Raspored',
+    },
+    weekText: 'Sed',
+    allDayText: 'Cijeli dan',
+    moreLinkText(n) {
+      return '+ još ' + n
+    },
+    noEventsText: 'Nema događaja za prikazivanje',
+  };
+
+  var l11 = {
+    code: 'ca',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Anterior',
+      next: 'Següent',
+      today: 'Avui',
+      month: 'Mes',
+      week: 'Setmana',
+      day: 'Dia',
+      list: 'Agenda',
+    },
+    weekText: 'Set',
+    allDayText: 'Tot el dia',
+    moreLinkText: 'més',
+    noEventsText: 'No hi ha esdeveniments per mostrar',
+  };
+
+  var l12 = {
+    code: 'cs',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Dříve',
+      next: 'Později',
+      today: 'Nyní',
+      month: 'Měsíc',
+      week: 'Týden',
+      day: 'Den',
+      list: 'Agenda',
+    },
+    weekText: 'Týd',
+    allDayText: 'Celý den',
+    moreLinkText(n) {
+      return '+další: ' + n
+    },
+    noEventsText: 'Žádné akce k zobrazení',
+  };
+
+  var l13 = {
+    code: 'da',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Forrige',
+      next: 'Næste',
+      today: 'I dag',
+      month: 'Måned',
+      week: 'Uge',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    weekText: 'Uge',
+    allDayText: 'Hele dagen',
+    moreLinkText: 'flere',
+    noEventsText: 'Ingen arrangementer at vise',
+  };
+
+  var l14 = {
+    code: 'de',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Zurück',
+      next: 'Vor',
+      today: 'Heute',
+      year: 'Jahr',
+      month: 'Monat',
+      week: 'Woche',
+      day: 'Tag',
+      list: 'Terminübersicht',
+    },
+    weekText: 'KW',
+    allDayText: 'Ganztägig',
+    moreLinkText(n) {
+      return '+ weitere ' + n
+    },
+    noEventsText: 'Keine Ereignisse anzuzeigen',
+  };
+
+  var l15 = {
+    code: 'el',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Προηγούμενος',
+      next: 'Επόμενος',
+      today: 'Σήμερα',
+      month: 'Μήνας',
+      week: 'Εβδομάδα',
+      day: 'Ημέρα',
+      list: 'Ατζέντα',
+    },
+    weekText: 'Εβδ',
+    allDayText: 'Ολοήμερο',
+    moreLinkText: 'περισσότερα',
+    noEventsText: 'Δεν υπάρχουν γεγονότα προς εμφάνιση',
+  };
+
+  var l16 = {
+    code: 'en-au',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+  };
+
+  var l17 = {
+    code: 'en-gb',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+  };
+
+  var l18 = {
+    code: 'en-nz',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+  };
+
+  var l19 = {
+    code: 'es',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 6, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Ant',
+      next: 'Sig',
+      today: 'Hoy',
+      month: 'Mes',
+      week: 'Semana',
+      day: 'Día',
+      list: 'Agenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Todo el día',
+    moreLinkText: 'más',
+    noEventsText: 'No hay eventos para mostrar',
+  };
+
+  var l20 = {
+    code: 'es',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Ant',
+      next: 'Sig',
+      today: 'Hoy',
+      month: 'Mes',
+      week: 'Semana',
+      day: 'Día',
+      list: 'Agenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Todo el día',
+    moreLinkText: 'más',
+    noEventsText: 'No hay eventos para mostrar',
+  };
+
+  var l21 = {
+    code: 'et',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Eelnev',
+      next: 'Järgnev',
+      today: 'Täna',
+      month: 'Kuu',
+      week: 'Nädal',
+      day: 'Päev',
+      list: 'Päevakord',
+    },
+    weekText: 'näd',
+    allDayText: 'Kogu päev',
+    moreLinkText(n) {
+      return '+ veel ' + n
+    },
+    noEventsText: 'Kuvamiseks puuduvad sündmused',
+  };
+
+  var l22 = {
+    code: 'eu',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Aur',
+      next: 'Hur',
+      today: 'Gaur',
+      month: 'Hilabetea',
+      week: 'Astea',
+      day: 'Eguna',
+      list: 'Agenda',
+    },
+    weekText: 'As',
+    allDayText: 'Egun osoa',
+    moreLinkText: 'gehiago',
+    noEventsText: 'Ez dago ekitaldirik erakusteko',
+  };
+
+  var l23 = {
+    code: 'fa',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'قبلی',
+      next: 'بعدی',
+      today: 'امروز',
+      month: 'ماه',
+      week: 'هفته',
+      day: 'روز',
+      list: 'برنامه',
+    },
+    weekText: 'هف',
+    allDayText: 'تمام روز',
+    moreLinkText(n) {
+      return 'بیش از ' + n
+    },
+    noEventsText: 'هیچ رویدادی به نمایش',
+  };
+
+  var l24 = {
+    code: 'fi',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Edellinen',
+      next: 'Seuraava',
+      today: 'Tänään',
+      month: 'Kuukausi',
+      week: 'Viikko',
+      day: 'Päivä',
+      list: 'Tapahtumat',
+    },
+    weekText: 'Vk',
+    allDayText: 'Koko päivä',
+    moreLinkText: 'lisää',
+    noEventsText: 'Ei näytettäviä tapahtumia',
+  };
+
+  var l25 = {
+    code: 'fr',
+    buttonText: {
+      prev: 'Précédent',
+      next: 'Suivant',
+      today: "Aujourd'hui",
+      year: 'Année',
+      month: 'Mois',
+      week: 'Semaine',
+      day: 'Jour',
+      list: 'Mon planning',
+    },
+    weekText: 'Sem.',
+    allDayText: 'Toute la journée',
+    moreLinkText: 'en plus',
+    noEventsText: 'Aucun événement à afficher',
+  };
+
+  var l26 = {
+    code: 'fr-ch',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Précédent',
+      next: 'Suivant',
+      today: 'Courant',
+      year: 'Année',
+      month: 'Mois',
+      week: 'Semaine',
+      day: 'Jour',
+      list: 'Mon planning',
+    },
+    weekText: 'Sm',
+    allDayText: 'Toute la journée',
+    moreLinkText: 'en plus',
+    noEventsText: 'Aucun événement à afficher',
+  };
+
+  var l27 = {
+    code: 'fr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Précédent',
+      next: 'Suivant',
+      today: "Aujourd'hui",
+      year: 'Année',
+      month: 'Mois',
+      week: 'Semaine',
+      day: 'Jour',
+      list: 'Planning',
+    },
+    weekText: 'Sem.',
+    allDayText: 'Toute la journée',
+    moreLinkText: 'en plus',
+    noEventsText: 'Aucun événement à afficher',
+  };
+
+  var l28 = {
+    code: 'gl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Ant',
+      next: 'Seg',
+      today: 'Hoxe',
+      month: 'Mes',
+      week: 'Semana',
+      day: 'Día',
+      list: 'Axenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Todo o día',
+    moreLinkText: 'máis',
+    noEventsText: 'Non hai eventos para amosar',
+  };
+
+  var l29 = {
+    code: 'he',
+    direction: 'rtl',
+    buttonText: {
+      prev: 'הקודם',
+      next: 'הבא',
+      today: 'היום',
+      month: 'חודש',
+      week: 'שבוע',
+      day: 'יום',
+      list: 'סדר יום',
+    },
+    allDayText: 'כל היום',
+    moreLinkText: 'אחר',
+    noEventsText: 'אין אירועים להצגה',
+    weekText: 'שבוע',
+  };
+
+  var l30 = {
+    code: 'hi',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 6, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'पिछला',
+      next: 'अगला',
+      today: 'आज',
+      month: 'महीना',
+      week: 'सप्ताह',
+      day: 'दिन',
+      list: 'कार्यसूची',
+    },
+    weekText: 'हफ्ता',
+    allDayText: 'सभी दिन',
+    moreLinkText(n) {
+      return '+अधिक ' + n
+    },
+    noEventsText: 'कोई घटनाओं को प्रदर्शित करने के लिए',
+  };
+
+  var l31 = {
+    code: 'hr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prijašnji',
+      next: 'Sljedeći',
+      today: 'Danas',
+      month: 'Mjesec',
+      week: 'Tjedan',
+      day: 'Dan',
+      list: 'Raspored',
+    },
+    weekText: 'Tje',
+    allDayText: 'Cijeli dan',
+    moreLinkText(n) {
+      return '+ još ' + n
+    },
+    noEventsText: 'Nema događaja za prikaz',
+  };
+
+  var l32 = {
+    code: 'hu',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'vissza',
+      next: 'előre',
+      today: 'ma',
+      month: 'Hónap',
+      week: 'Hét',
+      day: 'Nap',
+      list: 'Napló',
+    },
+    weekText: 'Hét',
+    allDayText: 'Egész nap',
+    moreLinkText: 'további',
+    noEventsText: 'Nincs megjeleníthető esemény',
+  };
+
+  var l33 = {
+    code: 'id',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'mundur',
+      next: 'maju',
+      today: 'hari ini',
+      month: 'Bulan',
+      week: 'Minggu',
+      day: 'Hari',
+      list: 'Agenda',
+    },
+    weekText: 'Mg',
+    allDayText: 'Sehari penuh',
+    moreLinkText: 'lebih',
+    noEventsText: 'Tidak ada acara untuk ditampilkan',
+  };
+
+  var l34 = {
+    code: 'is',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Fyrri',
+      next: 'Næsti',
+      today: 'Í dag',
+      month: 'Mánuður',
+      week: 'Vika',
+      day: 'Dagur',
+      list: 'Dagskrá',
+    },
+    weekText: 'Vika',
+    allDayText: 'Allan daginn',
+    moreLinkText: 'meira',
+    noEventsText: 'Engir viðburðir til að sýna',
+  };
+
+  var l35 = {
+    code: 'it',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prec',
+      next: 'Succ',
+      today: 'Oggi',
+      month: 'Mese',
+      week: 'Settimana',
+      day: 'Giorno',
+      list: 'Agenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Tutto il giorno',
+    moreLinkText(n) {
+      return '+altri ' + n
+    },
+    noEventsText: 'Non ci sono eventi da visualizzare',
+  };
+
+  var l36 = {
+    code: 'ja',
+    buttonText: {
+      prev: '前',
+      next: '次',
+      today: '今日',
+      month: '月',
+      week: '週',
+      day: '日',
+      list: '予定リスト',
+    },
+    weekText: '週',
+    allDayText: '終日',
+    moreLinkText(n) {
+      return '他 ' + n + ' 件'
+    },
+    noEventsText: '表示する予定はありません',
+  };
+
+  var l37 = {
+    code: 'ka',
+    week: {
+      dow: 1,
+      doy: 7,
+    },
+    buttonText: {
+      prev: 'წინა',
+      next: 'შემდეგი',
+      today: 'დღეს',
+      month: 'თვე',
+      week: 'კვირა',
+      day: 'დღე',
+      list: 'დღის წესრიგი',
+    },
+    weekText: 'კვ',
+    allDayText: 'მთელი დღე',
+    moreLinkText(n) {
+      return '+ კიდევ ' + n
+    },
+    noEventsText: 'ღონისძიებები არ არის',
+  };
+
+  var l38 = {
+    code: 'kk',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Алдыңғы',
+      next: 'Келесі',
+      today: 'Бүгін',
+      month: 'Ай',
+      week: 'Апта',
+      day: 'Күн',
+      list: 'Күн тәртібі',
+    },
+    weekText: 'Не',
+    allDayText: 'Күні бойы',
+    moreLinkText(n) {
+      return '+ тағы ' + n
+    },
+    noEventsText: 'Көрсету үшін оқиғалар жоқ',
+  };
+
+  var l39 = {
+    code: 'ko',
+    buttonText: {
+      prev: '이전달',
+      next: '다음달',
+      today: '오늘',
+      month: '월',
+      week: '주',
+      day: '일',
+      list: '일정목록',
+    },
+    weekText: '주',
+    allDayText: '종일',
+    moreLinkText: '개',
+    noEventsText: '일정이 없습니다',
+  };
+
+  var l40 = {
+    code: 'lb',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Zréck',
+      next: 'Weider',
+      today: 'Haut',
+      month: 'Mount',
+      week: 'Woch',
+      day: 'Dag',
+      list: 'Terminiwwersiicht',
+    },
+    weekText: 'W',
+    allDayText: 'Ganzen Dag',
+    moreLinkText: 'méi',
+    noEventsText: 'Nee Evenementer ze affichéieren',
+  };
+
+  var l41 = {
+    code: 'lt',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Atgal',
+      next: 'Pirmyn',
+      today: 'Šiandien',
+      month: 'Mėnuo',
+      week: 'Savaitė',
+      day: 'Diena',
+      list: 'Darbotvarkė',
+    },
+    weekText: 'SAV',
+    allDayText: 'Visą dieną',
+    moreLinkText: 'daugiau',
+    noEventsText: 'Nėra įvykių rodyti',
+  };
+
+  var l42 = {
+    code: 'lv',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Iepr.',
+      next: 'Nāk.',
+      today: 'Šodien',
+      month: 'Mēnesis',
+      week: 'Nedēļa',
+      day: 'Diena',
+      list: 'Dienas kārtība',
+    },
+    weekText: 'Ned.',
+    allDayText: 'Visu dienu',
+    moreLinkText(n) {
+      return '+vēl ' + n
+    },
+    noEventsText: 'Nav notikumu',
+  };
+
+  var l43 = {
+    code: 'mk',
+    buttonText: {
+      prev: 'претходно',
+      next: 'следно',
+      today: 'Денес',
+      month: 'Месец',
+      week: 'Недела',
+      day: 'Ден',
+      list: 'График',
+    },
+    weekText: 'Сед',
+    allDayText: 'Цел ден',
+    moreLinkText(n) {
+      return '+повеќе ' + n
+    },
+    noEventsText: 'Нема настани за прикажување',
+  };
+
+  var l44 = {
+    code: 'ms',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Sebelum',
+      next: 'Selepas',
+      today: 'hari ini',
+      month: 'Bulan',
+      week: 'Minggu',
+      day: 'Hari',
+      list: 'Agenda',
+    },
+    weekText: 'Mg',
+    allDayText: 'Sepanjang hari',
+    moreLinkText(n) {
+      return 'masih ada ' + n + ' acara'
+    },
+    noEventsText: 'Tiada peristiwa untuk dipaparkan',
+  };
+
+  var l45 = {
+    code: 'nb',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Forrige',
+      next: 'Neste',
+      today: 'I dag',
+      month: 'Måned',
+      week: 'Uke',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    weekText: 'Uke',
+    allDayText: 'Hele dagen',
+    moreLinkText: 'til',
+    noEventsText: 'Ingen hendelser å vise',
+  };
+
+  var l46 = {
+    code: 'ne', // code for nepal
+    week: {
+      dow: 7, // Sunday is the first day of the week.
+      doy: 1, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'अघिल्लो',
+      next: 'अर्को',
+      today: 'आज',
+      month: 'महिना',
+      week: 'हप्ता',
+      day: 'दिन',
+      list: 'सूची',
+    },
+    weekText: 'हप्ता',
+    allDayText: 'दिनभरि',
+    moreLinkText: 'थप लिंक',
+    noEventsText: 'देखाउनको लागि कुनै घटनाहरू छैनन्',
+  };
+
+  var l47 = {
+    code: 'nl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Voorgaand',
+      next: 'Volgende',
+      today: 'Vandaag',
+      year: 'Jaar',
+      month: 'Maand',
+      week: 'Week',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    allDayText: 'Hele dag',
+    moreLinkText: 'extra',
+    noEventsText: 'Geen evenementen om te laten zien',
+  };
+
+  var l48 = {
+    code: 'nn',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Førre',
+      next: 'Neste',
+      today: 'I dag',
+      month: 'Månad',
+      week: 'Veke',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    weekText: 'Veke',
+    allDayText: 'Heile dagen',
+    moreLinkText: 'til',
+    noEventsText: 'Ingen hendelser å vise',
+  };
+
+  var l49 = {
+    code: 'pl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Poprzedni',
+      next: 'Następny',
+      today: 'Dziś',
+      month: 'Miesiąc',
+      week: 'Tydzień',
+      day: 'Dzień',
+      list: 'Plan dnia',
+    },
+    weekText: 'Tydz',
+    allDayText: 'Cały dzień',
+    moreLinkText: 'więcej',
+    noEventsText: 'Brak wydarzeń do wyświetlenia',
+  };
+
+  var l50 = {
+    code: 'pt-br',
+    buttonText: {
+      prev: 'Anterior',
+      next: 'Próximo',
+      today: 'Hoje',
+      month: 'Mês',
+      week: 'Semana',
+      day: 'Dia',
+      list: 'Lista',
+    },
+    weekText: 'Sm',
+    allDayText: 'dia inteiro',
+    moreLinkText(n) {
+      return 'mais +' + n
+    },
+    noEventsText: 'Não há eventos para mostrar',
+  };
+
+  var l51 = {
+    code: 'pt',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Anterior',
+      next: 'Seguinte',
+      today: 'Hoje',
+      month: 'Mês',
+      week: 'Semana',
+      day: 'Dia',
+      list: 'Agenda',
+    },
+    weekText: 'Sem',
+    allDayText: 'Todo o dia',
+    moreLinkText: 'mais',
+    noEventsText: 'Não há eventos para mostrar',
+  };
+
+  var l52 = {
+    code: 'ro',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'precedentă',
+      next: 'următoare',
+      today: 'Azi',
+      month: 'Lună',
+      week: 'Săptămână',
+      day: 'Zi',
+      list: 'Agendă',
+    },
+    weekText: 'Săpt',
+    allDayText: 'Toată ziua',
+    moreLinkText(n) {
+      return '+alte ' + n
+    },
+    noEventsText: 'Nu există evenimente de afișat',
+  };
+
+  var l53 = {
+    code: 'ru',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Пред',
+      next: 'След',
+      today: 'Сегодня',
+      month: 'Месяц',
+      week: 'Неделя',
+      day: 'День',
+      list: 'Повестка дня',
+    },
+    weekText: 'Нед',
+    allDayText: 'Весь день',
+    moreLinkText(n) {
+      return '+ ещё ' + n
+    },
+    noEventsText: 'Нет событий для отображения',
+  };
+
+  var l54 = {
+    code: 'sk',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Predchádzajúci',
+      next: 'Nasledujúci',
+      today: 'Dnes',
+      month: 'Mesiac',
+      week: 'Týždeň',
+      day: 'Deň',
+      list: 'Rozvrh',
+    },
+    weekText: 'Ty',
+    allDayText: 'Celý deň',
+    moreLinkText(n) {
+      return '+ďalšie: ' + n
+    },
+    noEventsText: 'Žiadne akcie na zobrazenie',
+  };
+
+  var l55 = {
+    code: 'sl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prejšnji',
+      next: 'Naslednji',
+      today: 'Trenutni',
+      month: 'Mesec',
+      week: 'Teden',
+      day: 'Dan',
+      list: 'Dnevni red',
+    },
+    weekText: 'Teden',
+    allDayText: 'Ves dan',
+    moreLinkText: 'več',
+    noEventsText: 'Ni dogodkov za prikaz',
+  };
+
+  var l56 = {
+    code: 'sq',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'mbrapa',
+      next: 'Përpara',
+      today: 'sot',
+      month: 'Muaj',
+      week: 'Javë',
+      day: 'Ditë',
+      list: 'Listë',
+    },
+    weekText: 'Ja',
+    allDayText: 'Gjithë ditën',
+    moreLinkText(n) {
+      return '+më tepër ' + n
+    },
+    noEventsText: 'Nuk ka evente për të shfaqur',
+  };
+
+  var l57 = {
+    code: 'sr-cyrl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Претходна',
+      next: 'следећи',
+      today: 'Данас',
+      month: 'Месец',
+      week: 'Недеља',
+      day: 'Дан',
+      list: 'Планер',
+    },
+    weekText: 'Сед',
+    allDayText: 'Цео дан',
+    moreLinkText(n) {
+      return '+ још ' + n
+    },
+    noEventsText: 'Нема догађаја за приказ',
+  };
+
+  var l58 = {
+    code: 'sr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prethodna',
+      next: 'Sledeći',
+      today: 'Danas',
+      month: 'Mеsеc',
+      week: 'Nеdеlja',
+      day: 'Dan',
+      list: 'Planеr',
+    },
+    weekText: 'Sed',
+    allDayText: 'Cеo dan',
+    moreLinkText(n) {
+      return '+ još ' + n
+    },
+    noEventsText: 'Nеma događaja za prikaz',
+  };
+
+  var l59 = {
+    code: 'sv',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Förra',
+      next: 'Nästa',
+      today: 'Idag',
+      month: 'Månad',
+      week: 'Vecka',
+      day: 'Dag',
+      list: 'Program',
+    },
+    weekText: 'v.',
+    allDayText: 'Heldag',
+    moreLinkText: 'till',
+    noEventsText: 'Inga händelser att visa',
+  };
+
+  var l60 = {
+    code: 'th',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'ก่อนหน้า',
+      next: 'ถัดไป',
+      prevYear: 'ปีก่อนหน้า',
+      nextYear: 'ปีถัดไป',
+      year: 'ปี',
+      today: 'วันนี้',
+      month: 'เดือน',
+      week: 'สัปดาห์',
+      day: 'วัน',
+      list: 'กำหนดการ',
+    },
+    weekText: 'สัปดาห์',
+    allDayText: 'ตลอดวัน',
+    moreLinkText: 'เพิ่มเติม',
+    noEventsText: 'ไม่มีกิจกรรมที่จะแสดง',
+  };
+
+  var l61 = {
+    code: 'tr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'geri',
+      next: 'ileri',
+      today: 'bugün',
+      month: 'Ay',
+      week: 'Hafta',
+      day: 'Gün',
+      list: 'Ajanda',
+    },
+    weekText: 'Hf',
+    allDayText: 'Tüm gün',
+    moreLinkText: 'daha fazla',
+    noEventsText: 'Gösterilecek etkinlik yok',
+  };
+
+  var l62 = {
+    code: 'ug',
+    buttonText: {
+      month: 'ئاي',
+      week: 'ھەپتە',
+      day: 'كۈن',
+      list: 'كۈنتەرتىپ',
+    },
+    allDayText: 'پۈتۈن كۈن',
+  };
+
+  var l63 = {
+    code: 'uk',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Попередній',
+      next: 'далі',
+      today: 'Сьогодні',
+      month: 'Місяць',
+      week: 'Тиждень',
+      day: 'День',
+      list: 'Порядок денний',
+    },
+    weekText: 'Тиж',
+    allDayText: 'Увесь день',
+    moreLinkText(n) {
+      return '+ще ' + n + '...'
+    },
+    noEventsText: 'Немає подій для відображення',
+  };
+
+  var l64 = {
+    code: 'uz',
+    buttonText: {
+      month: 'Oy',
+      week: 'Xafta',
+      day: 'Kun',
+      list: 'Kun tartibi',
+    },
+    allDayText: "Kun bo'yi",
+    moreLinkText(n) {
+      return '+ yana ' + n
+    },
+    noEventsText: "Ko'rsatish uchun voqealar yo'q",
+  };
+
+  var l65 = {
+    code: 'vi',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Trước',
+      next: 'Tiếp',
+      today: 'Hôm nay',
+      month: 'Tháng',
+      week: 'Tuần',
+      day: 'Ngày',
+      list: 'Lịch biểu',
+    },
+    weekText: 'Tu',
+    allDayText: 'Cả ngày',
+    moreLinkText(n) {
+      return '+ thêm ' + n
+    },
+    noEventsText: 'Không có sự kiện để hiển thị',
+  };
+
+  var l66 = {
+    code: 'zh-cn',
+    week: {
+      // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: '上月',
+      next: '下月',
+      today: '今天',
+      month: '月',
+      week: '周',
+      day: '日',
+      list: '日程',
+    },
+    weekText: '周',
+    allDayText: '全天',
+    moreLinkText(n) {
+      return '另外 ' + n + ' 个'
+    },
+    noEventsText: '没有事件显示',
+  };
+
+  var l67 = {
+    code: 'zh-tw',
+    buttonText: {
+      prev: '上月',
+      next: '下月',
+      today: '今天',
+      month: '月',
+      week: '週',
+      day: '天',
+      list: '活動列表',
+    },
+    weekText: '周',
+    allDayText: '整天',
+    moreLinkText: '顯示更多',
+    noEventsText: '没有任何活動',
+  };
+
+  /* eslint max-len: off */
+
+  var localesAll = [
+    l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, l26, l27, l28, l29, l30, l31, l32, l33, l34, l35, l36, l37, l38, l39, l40, l41, l42, l43, l44, l45, l46, l47, l48, l49, l50, l51, l52, l53, l54, l55, l56, l57, l58, l59, l60, l61, l62, l63, l64, l65, l66, l67, 
+  ];
+
+  return localesAll;
+
+}());

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
app/lib/fullcalendar/locales-all.min.js


+ 27 - 0
app/lib/fullcalendar/locales/af.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var af = {
+    code: 'af',
+    week: {
+      dow: 1, // Maandag is die eerste dag van die week.
+      doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
+    },
+    buttonText: {
+      prev: 'Vorige',
+      next: 'Volgende',
+      today: 'Vandag',
+      year: 'Jaar',
+      month: 'Maand',
+      week: 'Week',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    allDayText: 'Heeldag',
+    moreLinkText: 'Addisionele',
+    noEventsText: 'Daar is geen gebeurtenisse nie',
+  };
+
+  return af;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/ar-dz.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var arDz = {
+    code: 'ar-dz',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 4, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  return arDz;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/ar-kw.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var arKw = {
+    code: 'ar-kw',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  return arKw;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/ar-ly.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var arLy = {
+    code: 'ar-ly',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  return arLy;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/ar-ma.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var arMa = {
+    code: 'ar-ma',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  return arMa;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/ar-sa.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var arSa = {
+    code: 'ar-sa',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 6, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  return arSa;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/ar-tn.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var arTn = {
+    code: 'ar-tn',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  return arTn;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/ar.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ar = {
+    code: 'ar',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'السابق',
+      next: 'التالي',
+      today: 'اليوم',
+      month: 'شهر',
+      week: 'أسبوع',
+      day: 'يوم',
+      list: 'أجندة',
+    },
+    weekText: 'أسبوع',
+    allDayText: 'اليوم كله',
+    moreLinkText: 'أخرى',
+    noEventsText: 'أي أحداث لعرض',
+  };
+
+  return ar;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/az.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var az = {
+    code: 'az',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Əvvəl',
+      next: 'Sonra',
+      today: 'Bu Gün',
+      month: 'Ay',
+      week: 'Həftə',
+      day: 'Gün',
+      list: 'Gündəm',
+    },
+    weekText: 'Həftə',
+    allDayText: 'Bütün Gün',
+    moreLinkText(n) {
+      return '+ daha çox ' + n
+    },
+    noEventsText: 'Göstərmək üçün hadisə yoxdur',
+  };
+
+  return az;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/bg.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var bg = {
+    code: 'bg',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'назад',
+      next: 'напред',
+      today: 'днес',
+      month: 'Месец',
+      week: 'Седмица',
+      day: 'Ден',
+      list: 'График',
+    },
+    allDayText: 'Цял ден',
+    moreLinkText(n) {
+      return '+още ' + n
+    },
+    noEventsText: 'Няма събития за показване',
+  };
+
+  return bg;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/bs.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var bs = {
+    code: 'bs',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prošli',
+      next: 'Sljedeći',
+      today: 'Danas',
+      month: 'Mjesec',
+      week: 'Sedmica',
+      day: 'Dan',
+      list: 'Raspored',
+    },
+    weekText: 'Sed',
+    allDayText: 'Cijeli dan',
+    moreLinkText(n) {
+      return '+ još ' + n
+    },
+    noEventsText: 'Nema događaja za prikazivanje',
+  };
+
+  return bs;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/ca.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ca = {
+    code: 'ca',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Anterior',
+      next: 'Següent',
+      today: 'Avui',
+      month: 'Mes',
+      week: 'Setmana',
+      day: 'Dia',
+      list: 'Agenda',
+    },
+    weekText: 'Set',
+    allDayText: 'Tot el dia',
+    moreLinkText: 'més',
+    noEventsText: 'No hi ha esdeveniments per mostrar',
+  };
+
+  return ca;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/cs.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var cs = {
+    code: 'cs',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Dříve',
+      next: 'Později',
+      today: 'Nyní',
+      month: 'Měsíc',
+      week: 'Týden',
+      day: 'Den',
+      list: 'Agenda',
+    },
+    weekText: 'Týd',
+    allDayText: 'Celý den',
+    moreLinkText(n) {
+      return '+další: ' + n
+    },
+    noEventsText: 'Žádné akce k zobrazení',
+  };
+
+  return cs;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/da.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var da = {
+    code: 'da',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Forrige',
+      next: 'Næste',
+      today: 'I dag',
+      month: 'Måned',
+      week: 'Uge',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    weekText: 'Uge',
+    allDayText: 'Hele dagen',
+    moreLinkText: 'flere',
+    noEventsText: 'Ingen arrangementer at vise',
+  };
+
+  return da;
+
+}());

+ 30 - 0
app/lib/fullcalendar/locales/de.js

@@ -0,0 +1,30 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var de = {
+    code: 'de',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Zurück',
+      next: 'Vor',
+      today: 'Heute',
+      year: 'Jahr',
+      month: 'Monat',
+      week: 'Woche',
+      day: 'Tag',
+      list: 'Terminübersicht',
+    },
+    weekText: 'KW',
+    allDayText: 'Ganztägig',
+    moreLinkText(n) {
+      return '+ weitere ' + n
+    },
+    noEventsText: 'Keine Ereignisse anzuzeigen',
+  };
+
+  return de;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/el.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var el = {
+    code: 'el',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Προηγούμενος',
+      next: 'Επόμενος',
+      today: 'Σήμερα',
+      month: 'Μήνας',
+      week: 'Εβδομάδα',
+      day: 'Ημέρα',
+      list: 'Ατζέντα',
+    },
+    weekText: 'Εβδ',
+    allDayText: 'Ολοήμερο',
+    moreLinkText: 'περισσότερα',
+    noEventsText: 'Δεν υπάρχουν γεγονότα προς εμφάνιση',
+  };
+
+  return el;
+
+}());

+ 14 - 0
app/lib/fullcalendar/locales/en-au.js

@@ -0,0 +1,14 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var enAu = {
+    code: 'en-au',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+  };
+
+  return enAu;
+
+}());

+ 14 - 0
app/lib/fullcalendar/locales/en-gb.js

@@ -0,0 +1,14 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var enGb = {
+    code: 'en-gb',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+  };
+
+  return enGb;
+
+}());

+ 14 - 0
app/lib/fullcalendar/locales/en-nz.js

@@ -0,0 +1,14 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var enNz = {
+    code: 'en-nz',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+  };
+
+  return enNz;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/es-us.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var esUs = {
+    code: 'es',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 6, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Ant',
+      next: 'Sig',
+      today: 'Hoy',
+      month: 'Mes',
+      week: 'Semana',
+      day: 'Día',
+      list: 'Agenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Todo el día',
+    moreLinkText: 'más',
+    noEventsText: 'No hay eventos para mostrar',
+  };
+
+  return esUs;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/es.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var es = {
+    code: 'es',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Ant',
+      next: 'Sig',
+      today: 'Hoy',
+      month: 'Mes',
+      week: 'Semana',
+      day: 'Día',
+      list: 'Agenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Todo el día',
+    moreLinkText: 'más',
+    noEventsText: 'No hay eventos para mostrar',
+  };
+
+  return es;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/et.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var et = {
+    code: 'et',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Eelnev',
+      next: 'Järgnev',
+      today: 'Täna',
+      month: 'Kuu',
+      week: 'Nädal',
+      day: 'Päev',
+      list: 'Päevakord',
+    },
+    weekText: 'näd',
+    allDayText: 'Kogu päev',
+    moreLinkText(n) {
+      return '+ veel ' + n
+    },
+    noEventsText: 'Kuvamiseks puuduvad sündmused',
+  };
+
+  return et;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/eu.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var eu = {
+    code: 'eu',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Aur',
+      next: 'Hur',
+      today: 'Gaur',
+      month: 'Hilabetea',
+      week: 'Astea',
+      day: 'Eguna',
+      list: 'Agenda',
+    },
+    weekText: 'As',
+    allDayText: 'Egun osoa',
+    moreLinkText: 'gehiago',
+    noEventsText: 'Ez dago ekitaldirik erakusteko',
+  };
+
+  return eu;
+
+}());

+ 30 - 0
app/lib/fullcalendar/locales/fa.js

@@ -0,0 +1,30 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var fa = {
+    code: 'fa',
+    week: {
+      dow: 6, // Saturday is the first day of the week.
+      doy: 12, // The week that contains Jan 1st is the first week of the year.
+    },
+    direction: 'rtl',
+    buttonText: {
+      prev: 'قبلی',
+      next: 'بعدی',
+      today: 'امروز',
+      month: 'ماه',
+      week: 'هفته',
+      day: 'روز',
+      list: 'برنامه',
+    },
+    weekText: 'هف',
+    allDayText: 'تمام روز',
+    moreLinkText(n) {
+      return 'بیش از ' + n
+    },
+    noEventsText: 'هیچ رویدادی به نمایش',
+  };
+
+  return fa;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/fi.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var fi = {
+    code: 'fi',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Edellinen',
+      next: 'Seuraava',
+      today: 'Tänään',
+      month: 'Kuukausi',
+      week: 'Viikko',
+      day: 'Päivä',
+      list: 'Tapahtumat',
+    },
+    weekText: 'Vk',
+    allDayText: 'Koko päivä',
+    moreLinkText: 'lisää',
+    noEventsText: 'Ei näytettäviä tapahtumia',
+  };
+
+  return fi;
+
+}());

+ 24 - 0
app/lib/fullcalendar/locales/fr-ca.js

@@ -0,0 +1,24 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var frCa = {
+    code: 'fr',
+    buttonText: {
+      prev: 'Précédent',
+      next: 'Suivant',
+      today: "Aujourd'hui",
+      year: 'Année',
+      month: 'Mois',
+      week: 'Semaine',
+      day: 'Jour',
+      list: 'Mon planning',
+    },
+    weekText: 'Sem.',
+    allDayText: 'Toute la journée',
+    moreLinkText: 'en plus',
+    noEventsText: 'Aucun événement à afficher',
+  };
+
+  return frCa;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/fr-ch.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var frCh = {
+    code: 'fr-ch',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Précédent',
+      next: 'Suivant',
+      today: 'Courant',
+      year: 'Année',
+      month: 'Mois',
+      week: 'Semaine',
+      day: 'Jour',
+      list: 'Mon planning',
+    },
+    weekText: 'Sm',
+    allDayText: 'Toute la journée',
+    moreLinkText: 'en plus',
+    noEventsText: 'Aucun événement à afficher',
+  };
+
+  return frCh;
+
+}());

+ 28 - 0
app/lib/fullcalendar/locales/fr.js

@@ -0,0 +1,28 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var fr = {
+    code: 'fr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Précédent',
+      next: 'Suivant',
+      today: "Aujourd'hui",
+      year: 'Année',
+      month: 'Mois',
+      week: 'Semaine',
+      day: 'Jour',
+      list: 'Planning',
+    },
+    weekText: 'Sem.',
+    allDayText: 'Toute la journée',
+    moreLinkText: 'en plus',
+    noEventsText: 'Aucun événement à afficher',
+  };
+
+  return fr;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/gl.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var gl = {
+    code: 'gl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Ant',
+      next: 'Seg',
+      today: 'Hoxe',
+      month: 'Mes',
+      week: 'Semana',
+      day: 'Día',
+      list: 'Axenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Todo o día',
+    moreLinkText: 'máis',
+    noEventsText: 'Non hai eventos para amosar',
+  };
+
+  return gl;
+
+}());

+ 24 - 0
app/lib/fullcalendar/locales/he.js

@@ -0,0 +1,24 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var he = {
+    code: 'he',
+    direction: 'rtl',
+    buttonText: {
+      prev: 'הקודם',
+      next: 'הבא',
+      today: 'היום',
+      month: 'חודש',
+      week: 'שבוע',
+      day: 'יום',
+      list: 'סדר יום',
+    },
+    allDayText: 'כל היום',
+    moreLinkText: 'אחר',
+    noEventsText: 'אין אירועים להצגה',
+    weekText: 'שבוע',
+  };
+
+  return he;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/hi.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var hi = {
+    code: 'hi',
+    week: {
+      dow: 0, // Sunday is the first day of the week.
+      doy: 6, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'पिछला',
+      next: 'अगला',
+      today: 'आज',
+      month: 'महीना',
+      week: 'सप्ताह',
+      day: 'दिन',
+      list: 'कार्यसूची',
+    },
+    weekText: 'हफ्ता',
+    allDayText: 'सभी दिन',
+    moreLinkText(n) {
+      return '+अधिक ' + n
+    },
+    noEventsText: 'कोई घटनाओं को प्रदर्शित करने के लिए',
+  };
+
+  return hi;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/hr.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var hr = {
+    code: 'hr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prijašnji',
+      next: 'Sljedeći',
+      today: 'Danas',
+      month: 'Mjesec',
+      week: 'Tjedan',
+      day: 'Dan',
+      list: 'Raspored',
+    },
+    weekText: 'Tje',
+    allDayText: 'Cijeli dan',
+    moreLinkText(n) {
+      return '+ još ' + n
+    },
+    noEventsText: 'Nema događaja za prikaz',
+  };
+
+  return hr;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/hu.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var hu = {
+    code: 'hu',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'vissza',
+      next: 'előre',
+      today: 'ma',
+      month: 'Hónap',
+      week: 'Hét',
+      day: 'Nap',
+      list: 'Napló',
+    },
+    weekText: 'Hét',
+    allDayText: 'Egész nap',
+    moreLinkText: 'további',
+    noEventsText: 'Nincs megjeleníthető esemény',
+  };
+
+  return hu;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/id.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var id = {
+    code: 'id',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'mundur',
+      next: 'maju',
+      today: 'hari ini',
+      month: 'Bulan',
+      week: 'Minggu',
+      day: 'Hari',
+      list: 'Agenda',
+    },
+    weekText: 'Mg',
+    allDayText: 'Sehari penuh',
+    moreLinkText: 'lebih',
+    noEventsText: 'Tidak ada acara untuk ditampilkan',
+  };
+
+  return id;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/is.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var is = {
+    code: 'is',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Fyrri',
+      next: 'Næsti',
+      today: 'Í dag',
+      month: 'Mánuður',
+      week: 'Vika',
+      day: 'Dagur',
+      list: 'Dagskrá',
+    },
+    weekText: 'Vika',
+    allDayText: 'Allan daginn',
+    moreLinkText: 'meira',
+    noEventsText: 'Engir viðburðir til að sýna',
+  };
+
+  return is;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/it.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var it = {
+    code: 'it',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prec',
+      next: 'Succ',
+      today: 'Oggi',
+      month: 'Mese',
+      week: 'Settimana',
+      day: 'Giorno',
+      list: 'Agenda',
+    },
+    weekText: 'Sm',
+    allDayText: 'Tutto il giorno',
+    moreLinkText(n) {
+      return '+altri ' + n
+    },
+    noEventsText: 'Non ci sono eventi da visualizzare',
+  };
+
+  return it;
+
+}());

+ 25 - 0
app/lib/fullcalendar/locales/ja.js

@@ -0,0 +1,25 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ja = {
+    code: 'ja',
+    buttonText: {
+      prev: '前',
+      next: '次',
+      today: '今日',
+      month: '月',
+      week: '週',
+      day: '日',
+      list: '予定リスト',
+    },
+    weekText: '週',
+    allDayText: '終日',
+    moreLinkText(n) {
+      return '他 ' + n + ' 件'
+    },
+    noEventsText: '表示する予定はありません',
+  };
+
+  return ja;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/ka.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ka = {
+    code: 'ka',
+    week: {
+      dow: 1,
+      doy: 7,
+    },
+    buttonText: {
+      prev: 'წინა',
+      next: 'შემდეგი',
+      today: 'დღეს',
+      month: 'თვე',
+      week: 'კვირა',
+      day: 'დღე',
+      list: 'დღის წესრიგი',
+    },
+    weekText: 'კვ',
+    allDayText: 'მთელი დღე',
+    moreLinkText(n) {
+      return '+ კიდევ ' + n
+    },
+    noEventsText: 'ღონისძიებები არ არის',
+  };
+
+  return ka;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/kk.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var kk = {
+    code: 'kk',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Алдыңғы',
+      next: 'Келесі',
+      today: 'Бүгін',
+      month: 'Ай',
+      week: 'Апта',
+      day: 'Күн',
+      list: 'Күн тәртібі',
+    },
+    weekText: 'Не',
+    allDayText: 'Күні бойы',
+    moreLinkText(n) {
+      return '+ тағы ' + n
+    },
+    noEventsText: 'Көрсету үшін оқиғалар жоқ',
+  };
+
+  return kk;
+
+}());

+ 23 - 0
app/lib/fullcalendar/locales/ko.js

@@ -0,0 +1,23 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ko = {
+    code: 'ko',
+    buttonText: {
+      prev: '이전달',
+      next: '다음달',
+      today: '오늘',
+      month: '월',
+      week: '주',
+      day: '일',
+      list: '일정목록',
+    },
+    weekText: '주',
+    allDayText: '종일',
+    moreLinkText: '개',
+    noEventsText: '일정이 없습니다',
+  };
+
+  return ko;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/lb.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var lb = {
+    code: 'lb',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Zréck',
+      next: 'Weider',
+      today: 'Haut',
+      month: 'Mount',
+      week: 'Woch',
+      day: 'Dag',
+      list: 'Terminiwwersiicht',
+    },
+    weekText: 'W',
+    allDayText: 'Ganzen Dag',
+    moreLinkText: 'méi',
+    noEventsText: 'Nee Evenementer ze affichéieren',
+  };
+
+  return lb;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/lt.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var lt = {
+    code: 'lt',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Atgal',
+      next: 'Pirmyn',
+      today: 'Šiandien',
+      month: 'Mėnuo',
+      week: 'Savaitė',
+      day: 'Diena',
+      list: 'Darbotvarkė',
+    },
+    weekText: 'SAV',
+    allDayText: 'Visą dieną',
+    moreLinkText: 'daugiau',
+    noEventsText: 'Nėra įvykių rodyti',
+  };
+
+  return lt;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/lv.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var lv = {
+    code: 'lv',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Iepr.',
+      next: 'Nāk.',
+      today: 'Šodien',
+      month: 'Mēnesis',
+      week: 'Nedēļa',
+      day: 'Diena',
+      list: 'Dienas kārtība',
+    },
+    weekText: 'Ned.',
+    allDayText: 'Visu dienu',
+    moreLinkText(n) {
+      return '+vēl ' + n
+    },
+    noEventsText: 'Nav notikumu',
+  };
+
+  return lv;
+
+}());

+ 25 - 0
app/lib/fullcalendar/locales/mk.js

@@ -0,0 +1,25 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var mk = {
+    code: 'mk',
+    buttonText: {
+      prev: 'претходно',
+      next: 'следно',
+      today: 'Денес',
+      month: 'Месец',
+      week: 'Недела',
+      day: 'Ден',
+      list: 'График',
+    },
+    weekText: 'Сед',
+    allDayText: 'Цел ден',
+    moreLinkText(n) {
+      return '+повеќе ' + n
+    },
+    noEventsText: 'Нема настани за прикажување',
+  };
+
+  return mk;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/ms.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ms = {
+    code: 'ms',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Sebelum',
+      next: 'Selepas',
+      today: 'hari ini',
+      month: 'Bulan',
+      week: 'Minggu',
+      day: 'Hari',
+      list: 'Agenda',
+    },
+    weekText: 'Mg',
+    allDayText: 'Sepanjang hari',
+    moreLinkText(n) {
+      return 'masih ada ' + n + ' acara'
+    },
+    noEventsText: 'Tiada peristiwa untuk dipaparkan',
+  };
+
+  return ms;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/nb.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var nb = {
+    code: 'nb',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Forrige',
+      next: 'Neste',
+      today: 'I dag',
+      month: 'Måned',
+      week: 'Uke',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    weekText: 'Uke',
+    allDayText: 'Hele dagen',
+    moreLinkText: 'til',
+    noEventsText: 'Ingen hendelser å vise',
+  };
+
+  return nb;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/ne.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ne = {
+    code: 'ne', // code for nepal
+    week: {
+      dow: 7, // Sunday is the first day of the week.
+      doy: 1, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'अघिल्लो',
+      next: 'अर्को',
+      today: 'आज',
+      month: 'महिना',
+      week: 'हप्ता',
+      day: 'दिन',
+      list: 'सूची',
+    },
+    weekText: 'हप्ता',
+    allDayText: 'दिनभरि',
+    moreLinkText: 'थप लिंक',
+    noEventsText: 'देखाउनको लागि कुनै घटनाहरू छैनन्',
+  };
+
+  return ne;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/nl.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var nl = {
+    code: 'nl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Voorgaand',
+      next: 'Volgende',
+      today: 'Vandaag',
+      year: 'Jaar',
+      month: 'Maand',
+      week: 'Week',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    allDayText: 'Hele dag',
+    moreLinkText: 'extra',
+    noEventsText: 'Geen evenementen om te laten zien',
+  };
+
+  return nl;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/nn.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var nn = {
+    code: 'nn',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Førre',
+      next: 'Neste',
+      today: 'I dag',
+      month: 'Månad',
+      week: 'Veke',
+      day: 'Dag',
+      list: 'Agenda',
+    },
+    weekText: 'Veke',
+    allDayText: 'Heile dagen',
+    moreLinkText: 'til',
+    noEventsText: 'Ingen hendelser å vise',
+  };
+
+  return nn;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/pl.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var pl = {
+    code: 'pl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Poprzedni',
+      next: 'Następny',
+      today: 'Dziś',
+      month: 'Miesiąc',
+      week: 'Tydzień',
+      day: 'Dzień',
+      list: 'Plan dnia',
+    },
+    weekText: 'Tydz',
+    allDayText: 'Cały dzień',
+    moreLinkText: 'więcej',
+    noEventsText: 'Brak wydarzeń do wyświetlenia',
+  };
+
+  return pl;
+
+}());

+ 25 - 0
app/lib/fullcalendar/locales/pt-br.js

@@ -0,0 +1,25 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ptBr = {
+    code: 'pt-br',
+    buttonText: {
+      prev: 'Anterior',
+      next: 'Próximo',
+      today: 'Hoje',
+      month: 'Mês',
+      week: 'Semana',
+      day: 'Dia',
+      list: 'Lista',
+    },
+    weekText: 'Sm',
+    allDayText: 'dia inteiro',
+    moreLinkText(n) {
+      return 'mais +' + n
+    },
+    noEventsText: 'Não há eventos para mostrar',
+  };
+
+  return ptBr;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/pt.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var pt = {
+    code: 'pt',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Anterior',
+      next: 'Seguinte',
+      today: 'Hoje',
+      month: 'Mês',
+      week: 'Semana',
+      day: 'Dia',
+      list: 'Agenda',
+    },
+    weekText: 'Sem',
+    allDayText: 'Todo o dia',
+    moreLinkText: 'mais',
+    noEventsText: 'Não há eventos para mostrar',
+  };
+
+  return pt;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/ro.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ro = {
+    code: 'ro',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'precedentă',
+      next: 'următoare',
+      today: 'Azi',
+      month: 'Lună',
+      week: 'Săptămână',
+      day: 'Zi',
+      list: 'Agendă',
+    },
+    weekText: 'Săpt',
+    allDayText: 'Toată ziua',
+    moreLinkText(n) {
+      return '+alte ' + n
+    },
+    noEventsText: 'Nu există evenimente de afișat',
+  };
+
+  return ro;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/ru.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ru = {
+    code: 'ru',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Пред',
+      next: 'След',
+      today: 'Сегодня',
+      month: 'Месяц',
+      week: 'Неделя',
+      day: 'День',
+      list: 'Повестка дня',
+    },
+    weekText: 'Нед',
+    allDayText: 'Весь день',
+    moreLinkText(n) {
+      return '+ ещё ' + n
+    },
+    noEventsText: 'Нет событий для отображения',
+  };
+
+  return ru;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/sk.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var sk = {
+    code: 'sk',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Predchádzajúci',
+      next: 'Nasledujúci',
+      today: 'Dnes',
+      month: 'Mesiac',
+      week: 'Týždeň',
+      day: 'Deň',
+      list: 'Rozvrh',
+    },
+    weekText: 'Ty',
+    allDayText: 'Celý deň',
+    moreLinkText(n) {
+      return '+ďalšie: ' + n
+    },
+    noEventsText: 'Žiadne akcie na zobrazenie',
+  };
+
+  return sk;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/sl.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var sl = {
+    code: 'sl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prejšnji',
+      next: 'Naslednji',
+      today: 'Trenutni',
+      month: 'Mesec',
+      week: 'Teden',
+      day: 'Dan',
+      list: 'Dnevni red',
+    },
+    weekText: 'Teden',
+    allDayText: 'Ves dan',
+    moreLinkText: 'več',
+    noEventsText: 'Ni dogodkov za prikaz',
+  };
+
+  return sl;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/sq.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var sq = {
+    code: 'sq',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'mbrapa',
+      next: 'Përpara',
+      today: 'sot',
+      month: 'Muaj',
+      week: 'Javë',
+      day: 'Ditë',
+      list: 'Listë',
+    },
+    weekText: 'Ja',
+    allDayText: 'Gjithë ditën',
+    moreLinkText(n) {
+      return '+më tepër ' + n
+    },
+    noEventsText: 'Nuk ka evente për të shfaqur',
+  };
+
+  return sq;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/sr-cyrl.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var srCyrl = {
+    code: 'sr-cyrl',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Претходна',
+      next: 'следећи',
+      today: 'Данас',
+      month: 'Месец',
+      week: 'Недеља',
+      day: 'Дан',
+      list: 'Планер',
+    },
+    weekText: 'Сед',
+    allDayText: 'Цео дан',
+    moreLinkText(n) {
+      return '+ још ' + n
+    },
+    noEventsText: 'Нема догађаја за приказ',
+  };
+
+  return srCyrl;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/sr.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var sr = {
+    code: 'sr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Prethodna',
+      next: 'Sledeći',
+      today: 'Danas',
+      month: 'Mеsеc',
+      week: 'Nеdеlja',
+      day: 'Dan',
+      list: 'Planеr',
+    },
+    weekText: 'Sed',
+    allDayText: 'Cеo dan',
+    moreLinkText(n) {
+      return '+ još ' + n
+    },
+    noEventsText: 'Nеma događaja za prikaz',
+  };
+
+  return sr;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/sv.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var sv = {
+    code: 'sv',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Förra',
+      next: 'Nästa',
+      today: 'Idag',
+      month: 'Månad',
+      week: 'Vecka',
+      day: 'Dag',
+      list: 'Program',
+    },
+    weekText: 'v.',
+    allDayText: 'Heldag',
+    moreLinkText: 'till',
+    noEventsText: 'Inga händelser att visa',
+  };
+
+  return sv;
+
+}());

+ 30 - 0
app/lib/fullcalendar/locales/th.js

@@ -0,0 +1,30 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var th = {
+    code: 'th',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'ก่อนหน้า',
+      next: 'ถัดไป',
+      prevYear: 'ปีก่อนหน้า',
+      nextYear: 'ปีถัดไป',
+      year: 'ปี',
+      today: 'วันนี้',
+      month: 'เดือน',
+      week: 'สัปดาห์',
+      day: 'วัน',
+      list: 'กำหนดการ',
+    },
+    weekText: 'สัปดาห์',
+    allDayText: 'ตลอดวัน',
+    moreLinkText: 'เพิ่มเติม',
+    noEventsText: 'ไม่มีกิจกรรมที่จะแสดง',
+  };
+
+  return th;
+
+}());

+ 27 - 0
app/lib/fullcalendar/locales/tr.js

@@ -0,0 +1,27 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var tr = {
+    code: 'tr',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'geri',
+      next: 'ileri',
+      today: 'bugün',
+      month: 'Ay',
+      week: 'Hafta',
+      day: 'Gün',
+      list: 'Ajanda',
+    },
+    weekText: 'Hf',
+    allDayText: 'Tüm gün',
+    moreLinkText: 'daha fazla',
+    noEventsText: 'Gösterilecek etkinlik yok',
+  };
+
+  return tr;
+
+}());

+ 17 - 0
app/lib/fullcalendar/locales/ug.js

@@ -0,0 +1,17 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var ug = {
+    code: 'ug',
+    buttonText: {
+      month: 'ئاي',
+      week: 'ھەپتە',
+      day: 'كۈن',
+      list: 'كۈنتەرتىپ',
+    },
+    allDayText: 'پۈتۈن كۈن',
+  };
+
+  return ug;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/uk.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var uk = {
+    code: 'uk',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 7, // The week that contains Jan 1st is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Попередній',
+      next: 'далі',
+      today: 'Сьогодні',
+      month: 'Місяць',
+      week: 'Тиждень',
+      day: 'День',
+      list: 'Порядок денний',
+    },
+    weekText: 'Тиж',
+    allDayText: 'Увесь день',
+    moreLinkText(n) {
+      return '+ще ' + n + '...'
+    },
+    noEventsText: 'Немає подій для відображення',
+  };
+
+  return uk;
+
+}());

+ 21 - 0
app/lib/fullcalendar/locales/uz.js

@@ -0,0 +1,21 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var uz = {
+    code: 'uz',
+    buttonText: {
+      month: 'Oy',
+      week: 'Xafta',
+      day: 'Kun',
+      list: 'Kun tartibi',
+    },
+    allDayText: "Kun bo'yi",
+    moreLinkText(n) {
+      return '+ yana ' + n
+    },
+    noEventsText: "Ko'rsatish uchun voqealar yo'q",
+  };
+
+  return uz;
+
+}());

+ 29 - 0
app/lib/fullcalendar/locales/vi.js

@@ -0,0 +1,29 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var vi = {
+    code: 'vi',
+    week: {
+      dow: 1, // Monday is the first day of the week.
+      doy: 4, // The week that contains Jan 4th is the first week of the year.
+    },
+    buttonText: {
+      prev: 'Trước',
+      next: 'Tiếp',
+      today: 'Hôm nay',
+      month: 'Tháng',
+      week: 'Tuần',
+      day: 'Ngày',
+      list: 'Lịch biểu',
+    },
+    weekText: 'Tu',
+    allDayText: 'Cả ngày',
+    moreLinkText(n) {
+      return '+ thêm ' + n
+    },
+    noEventsText: 'Không có sự kiện để hiển thị',
+  };
+
+  return vi;
+
+}());

+ 31 - 0
app/lib/fullcalendar/locales/zh-cn.js

@@ -0,0 +1,31 @@
+FullCalendar.globalLocales.push(
+	(function () {
+		"use strict";
+
+		var zhCn = {
+			code: "zh-cn",
+			week: {
+				// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
+				dow: 1, // Monday is the first day of the week.
+				doy: 4, // The week that contains Jan 4th is the first week of the year.
+			},
+			buttonText: {
+				prev: "上月",
+				next: "下月",
+				today: "今天",
+				month: "月",
+				week: "周",
+				day: "日",
+				list: "日程",
+			},
+			weekText: "周",
+			allDayText: "全天",
+			moreLinkText(n) {
+				return "另外 " + n + " 个";
+			},
+			noEventsText: "没有事件显示",
+		};
+
+		return zhCn;
+	})()
+);

+ 23 - 0
app/lib/fullcalendar/locales/zh-tw.js

@@ -0,0 +1,23 @@
+FullCalendar.globalLocales.push(function () {
+  'use strict';
+
+  var zhTw = {
+    code: 'zh-tw',
+    buttonText: {
+      prev: '上月',
+      next: '下月',
+      today: '今天',
+      month: '月',
+      week: '週',
+      day: '天',
+      list: '活動列表',
+    },
+    weekText: '周',
+    allDayText: '整天',
+    moreLinkText: '顯示更多',
+    noEventsText: '没有任何活動',
+  };
+
+  return zhTw;
+
+}());

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 71 - 0
app/lib/fullcalendar/main.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 56 - 0
app/lib/fullcalendar/main.js


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
app/lib/fullcalendar/main.min.css


La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 5 - 0
app/lib/fullcalendar/main.min.js


+ 39 - 0
app/lib/fullcalendar/php/get-date.php

@@ -0,0 +1,39 @@
+<?php
+//
+
+require_once "../../../path.php";
+require_once "../../../public/_pdo.php";
+
+function get_teacher_course($teacher_id){
+
+		$teacher = "  ";
+
+	global $PDO;
+	PDO_Connect("sqlite:"._FILE_DB_COURSE_);
+	
+	$query = "select * from course where teacher = ?  order by create_time DESC limit 0,100";
+
+	$Fetch = PDO_FetchAll($query,array($teacher_id));
+	
+	$output = array();
+	foreach ($Fetch as $key => $couse) {
+		# code...
+		$query = "select * from lesson where course_id = '{$couse["id"]}'   limit 0,300";
+		$fAllLesson = PDO_FetchAll($query);
+		foreach ($fAllLesson as  $lesson) {
+			$start = date("Y-m-d\TH:i:s+00:00",$lesson["date"]/1000);
+			$end = date("Y-m-d\TH:i:s+00:00",$lesson["date"]/1000+$lesson["duration"]);
+			$output[]=array("id"=>$lesson["id"],
+										"title"=>$couse["title"],
+										"url"=>"../../course/lesson.php?id=".$lesson["id"],
+										"start"=> $start,
+										"end"=>$end
+									);
+		}
+	}
+	return($output);
+	
+}
+
+
+?>

+ 53 - 0
app/lib/fullcalendar/php/get-events.php

@@ -0,0 +1,53 @@
+<?php
+
+//--------------------------------------------------------------------------------------------------
+// This script reads event data from a JSON file and outputs those events which are within the range
+// supplied by the "start" and "end" GET parameters.
+//
+// An optional "timeZone" GET parameter will force all ISO8601 date stings to a given timeZone.
+//
+// Requires PHP 5.2.0 or higher.
+//--------------------------------------------------------------------------------------------------
+
+// Require our Event class and datetime utilities
+require dirname(__FILE__) . '/utils.php';
+require_once "./get-date.php";
+
+// Short-circuit if the client did not give us a date range.
+if (!isset($_GET['start']) || !isset($_GET['end'])) {
+  die("Please provide a date range.");
+}
+
+// Parse the start/end parameters.
+// These are assumed to be ISO8601 strings with no time nor timeZone, like "2013-12-29".
+// Since no timeZone will be present, they will parsed as UTC.
+$range_start = parseDateTime($_GET['start']);
+$range_end = parseDateTime($_GET['end']);
+
+// Parse the timeZone parameter if it is present.
+$time_zone = null;
+if (isset($_GET['timeZone'])) {
+  $time_zone = new DateTimeZone($_GET['timeZone']);
+}
+
+// Read and parse our events JSON file into an array of event data arrays.
+//$json = file_get_contents(dirname(__FILE__) . '/../json/events.json');
+//$input_arrays = json_decode($json, true);
+//使用cookie传递老师id
+$input_arrays = get_teacher_course($_COOKIE["teacher_id"]);
+
+// Accumulate an output array of event data arrays.
+$output_arrays = array();
+foreach ($input_arrays as $array) {
+
+  // Convert the input array into a useful Event object
+  $event = new Event($array, $time_zone);
+
+  // If the event is in-bounds, add it to the output
+  if ($event->isWithinDayRange($range_start, $range_end)) {
+    $output_arrays[] = $event->toArray();
+  }
+}
+
+// Send JSON to the client.
+echo json_encode($output_arrays);

+ 9 - 0
app/lib/fullcalendar/php/get-time-zones.php

@@ -0,0 +1,9 @@
+<?php
+
+//--------------------------------------------------------------------------------------------------
+// This script outputs a JSON array of all timezones (like "America/Chicago") that PHP supports.
+//
+// Requires PHP 5.2.0 or higher.
+//--------------------------------------------------------------------------------------------------
+
+echo json_encode(DateTimeZone::listIdentifiers());

+ 130 - 0
app/lib/fullcalendar/php/utils.php

@@ -0,0 +1,130 @@
+<?php
+
+//--------------------------------------------------------------------------------------------------
+// Utilities for our event-fetching scripts.
+//
+// Requires PHP 5.2.0 or higher.
+//--------------------------------------------------------------------------------------------------
+
+// PHP will fatal error if we attempt to use the DateTime class without this being set.
+date_default_timezone_set('UTC');
+
+
+class Event {
+
+  // Tests whether the given ISO8601 string has a time-of-day or not
+  const ALL_DAY_REGEX = '/^\d{4}-\d\d-\d\d$/'; // matches strings like "2013-12-29"
+
+  public $title;
+  public $allDay; // a boolean
+  public $start; // a DateTime
+  public $end; // a DateTime, or null
+  public $properties = array(); // an array of other misc properties
+
+
+  // Constructs an Event object from the given array of key=>values.
+  // You can optionally force the timeZone of the parsed dates.
+  public function __construct($array, $timeZone=null) {
+
+    $this->title = $array['title'];
+
+    if (isset($array['allDay'])) {
+      // allDay has been explicitly specified
+      $this->allDay = (bool)$array['allDay'];
+    }
+    else {
+      // Guess allDay based off of ISO8601 date strings
+      $this->allDay = preg_match(self::ALL_DAY_REGEX, $array['start']) &&
+        (!isset($array['end']) || preg_match(self::ALL_DAY_REGEX, $array['end']));
+    }
+
+    if ($this->allDay) {
+      // If dates are allDay, we want to parse them in UTC to avoid DST issues.
+      $timeZone = null;
+    }
+
+    // Parse dates
+    $this->start = parseDateTime($array['start'], $timeZone);
+    $this->end = isset($array['end']) ? parseDateTime($array['end'], $timeZone) : null;
+
+    // Record misc properties
+    foreach ($array as $name => $value) {
+      if (!in_array($name, array('title', 'allDay', 'start', 'end'))) {
+        $this->properties[$name] = $value;
+      }
+    }
+  }
+
+
+  // Returns whether the date range of our event intersects with the given all-day range.
+  // $rangeStart and $rangeEnd are assumed to be dates in UTC with 00:00:00 time.
+  public function isWithinDayRange($rangeStart, $rangeEnd) {
+
+    // Normalize our event's dates for comparison with the all-day range.
+    $eventStart = stripTime($this->start);
+
+    if (isset($this->end)) {
+      $eventEnd = stripTime($this->end); // normalize
+    }
+    else {
+      $eventEnd = $eventStart; // consider this a zero-duration event
+    }
+
+    // Check if the two whole-day ranges intersect.
+    return $eventStart < $rangeEnd && $eventEnd >= $rangeStart;
+  }
+
+
+  // Converts this Event object back to a plain data array, to be used for generating JSON
+  public function toArray() {
+
+    // Start with the misc properties (don't worry, PHP won't affect the original array)
+    $array = $this->properties;
+
+    $array['title'] = $this->title;
+
+    // Figure out the date format. This essentially encodes allDay into the date string.
+    if ($this->allDay) {
+      $format = 'Y-m-d'; // output like "2013-12-29"
+    }
+    else {
+      $format = 'c'; // full ISO8601 output, like "2013-12-29T09:00:00+08:00"
+    }
+
+    // Serialize dates into strings
+    $array['start'] = $this->start->format($format);
+    if (isset($this->end)) {
+      $array['end'] = $this->end->format($format);
+    }
+
+    return $array;
+  }
+
+}
+
+
+// Date Utilities
+//----------------------------------------------------------------------------------------------
+
+
+// Parses a string into a DateTime object, optionally forced into the given timeZone.
+function parseDateTime($string, $timeZone=null) {
+  $date = new DateTime(
+    $string,
+    $timeZone ? $timeZone : new DateTimeZone('UTC')
+      // Used only when the string is ambiguous.
+      // Ignored if string has a timeZone offset in it.
+  );
+  if ($timeZone) {
+    // If our timeZone was ignored above, force it.
+    $date->setTimezone($timeZone);
+  }
+  return $date;
+}
+
+
+// Takes the year/month/date values of the given DateTime and converts them to a new DateTime,
+// but in UTC.
+function stripTime($datetime) {
+  return new DateTime($datetime->format('Y-m-d'));
+}

+ 1 - 0
app/pcdl/html_head.php

@@ -140,6 +140,7 @@ if (isset($_GET["language"])) {
 			padding: 0.7rem;
 			display: flex;
 			position: relative;
+			word-break: break-word;
 		}
 
 		.card>.title>a,

+ 62 - 0
app/pcdl/img/books.svg

@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.0" id="books_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 610 947" style="enable-background:new 0 0 610 947;" xml:space="preserve">
+<g>
+	<defs>
+		<rect id="SVGID_3_" x="-135.3" y="-0.1" width="1141.1" height="947.4"/>
+	</defs>
+	<clipPath id="SVGID_2_">
+		<use xlink:href="#SVGID_3_"  style="overflow:visible;"/>
+	</clipPath>
+	<g id="Mask_Group_2_1_" style="clip-path:url(#SVGID_2_);">
+		<g id="Group_57_1_" transform="translate(-2443.92 512.47)">
+			<path id="Path_106_1_" style="fill:#EAEAEA;" d="M3010.1,259.9h-514.5l178.3-1001.2h157.9L3010.1,259.9z"/>
+			<path id="Path_128_1_" style="fill:#F0F0F0;" d="M2752.9,168c142.1,0,257.3,43,257.3,96.1s-115.2,96.1-257.3,96.1
+				s-257.3-43-257.3-96.1S2610.8,168,2752.9,168z"/>
+			<g id="Group_56_1_" transform="translate(2703.386 -23.966)">
+				<path id="Path_107_1_" style="fill:#B03C2C;" d="M28.4,261.7l-100.3,23.9c-11.4-0.1-22.1-3-23.3-7.8V114.4L5.2,90.4V99l23.3-0.7
+					L28.4,261.7z"/>
+				<path id="Path_108_1_" style="fill:#782E29;" d="M-71.9,285.6L-71.9,285.6l0-171.2h-23.3v163.4C-94,282.6-83.3,285.5-71.9,285.6
+					z"/>
+				<path id="Path_109_1_" style="fill:#FFFFFF;" d="M-94.8,115.4L4.7,91.6c1.1,4.9,12.3,6.5,23.8,6.6l-100.3,23.9
+					C-82.5,122.1-92.5,119.6-94.8,115.4z"/>
+				<path id="Path_110_1_" style="fill:#B03C2C;" d="M55.2,270.8l-100.3,23.9c-11.4-0.1-22.1-3-23.3-7.8V123.5L32,99.6v8.6l23.3-0.7
+					L55.2,270.8z"/>
+				<path id="Path_111_1_" style="fill:#782E29;" d="M-45.1,294.7L-45.1,294.7l0-171.2h-23.3v163.4
+					C-67.2,291.8-56.5,294.6-45.1,294.7z"/>
+				<path id="Path_112_1_" style="fill:#FFFFFF;" d="M-68,124.5l99.5-23.7c1.1,4.9,12.3,6.5,23.8,6.6l-100.3,23.9
+					C-55.7,131.2-65.7,128.8-68,124.5z"/>
+				<path id="Path_113_1_" style="fill:#B03C2C;" d="M82,279.9l-100.3,23.9c-11.4-0.1-22.1-3-23.3-7.8V132.6l100.3-23.9v8.6
+					l23.3-0.7L82,279.9z"/>
+				<path id="Path_114_1_" style="fill:#782E29;" d="M-18.3,303.8L-18.3,303.8l0-171.2h-23.3V296C-40.4,300.9-29.7,303.7-18.3,303.8
+					z"/>
+				<path id="Path_115_1_" style="fill:#FFFFFF;" d="M-41.2,133.6l99.5-23.7c1.1,4.9,12.3,6.5,23.8,6.6l-100.3,23.9
+					C-28.9,140.4-38.9,137.9-41.2,133.6z"/>
+				<path id="Path_116_1_" style="fill:#B03C2C;" d="M108.8,289L8.5,313c-11.4-0.1-22.1-3-23.3-7.8V141.7l100.3-23.9v8.6l23.3-0.7
+					V289z"/>
+				<path id="Path_117_1_" style="fill:#782E29;" d="M8.5,313L8.5,313l0-171.2h-23.3v163.4C-13.6,310-2.9,312.8,8.5,313z"/>
+				<path id="Path_118_1_" style="fill:#FFFFFF;" d="M-14.4,142.7L85.1,119c1.1,4.9,12.3,6.5,23.8,6.6L8.5,149.6
+					C-2.1,149.5-12.1,147-14.4,142.7z"/>
+				<path id="Path_119_1_" style="fill:#B03C2C;" d="M135.6,298.1L35.3,322.1c-11.4-0.1-22.1-3-23.3-7.8V150.9l100.3-23.9v8.6
+					l23.3-0.7V298.1z"/>
+				<path id="Path_120_1_" style="fill:#782E29;" d="M35.3,322.1L35.3,322.1l0-171.2H12v163.4C13.2,319.1,23.9,322,35.3,322.1z"/>
+				<path id="Path_121_1_" style="fill:#FFFFFF;" d="M12.4,151.9l99.5-23.7c1.1,4.9,12.3,6.5,23.8,6.6L35.3,158.7
+					C24.7,158.6,14.7,156.1,12.4,151.9z"/>
+				<path id="Path_122_1_" style="fill:#B03C2C;" d="M162.4,307.3L62.1,331.2c-11.4-0.1-22.1-3-23.3-7.8V160L139.1,136v8.6l23.3-0.7
+					V307.3z"/>
+				<path id="Path_123_1_" style="fill:#782E29;" d="M62.1,331.2L62.1,331.2l0-171.2H38.8v163.4C39.9,328.2,50.6,331.1,62.1,331.2z"
+					/>
+				<path id="Path_124_1_" style="fill:#FFFFFF;" d="M39.2,161l99.5-23.7c1.1,4.9,12.3,6.5,23.8,6.6L62.1,167.8
+					C51.5,167.7,41.5,165.2,39.2,161z"/>
+				<path id="Path_125_1_" style="fill:#B03C2C;" d="M189.2,316.4L88.9,340.3c-11.4-0.1-22.1-3-23.3-7.8V169.1l100.3-23.9v8.6
+					l23.3-0.7V316.4z"/>
+				<path id="Path_126_1_" style="fill:#782E29;" d="M88.9,340.3L88.9,340.3l0-171.2H65.6v163.4C66.7,337.4,77.4,340.2,88.9,340.3z"
+					/>
+				<path id="Path_127_1_" style="fill:#FFFFFF;" d="M66,170.1l99.5-23.7c1.1,4.9,12.3,6.5,23.8,6.6L88.9,176.9
+					C78.2,176.8,68.2,174.4,66,170.1z"/>
+			</g>
+		</g>
+	</g>
+</g>
+</svg>

+ 127 - 0
app/pcdl/img/teachers.svg

@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.0" id="teachers_bg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 763 1491" style="enable-background:new 0 0 763 1491;" xml:space="preserve">
+<g id="Mask_Group_3_1_" transform="translate(0 -32)">
+	<g id="Group_62_1_" transform="translate(-1298.767 1264.372)">
+		<path id="Path_129_1_" style="fill:#545454;" d="M1507.6-1232.2L1361.5-17.1h630.3l-145.6-1215.1"/>
+		<ellipse id="Ellipse_4_1_" style="fill:#686868;" cx="1676.6" cy="-17.1" rx="315.1" ry="104"/>
+		<path id="Path_130_1_" style="fill:#343434;" d="M1724.5-230.8c-0.6-6.1-2.9-11.8-6.5-16.7c0,0,0.5-19.7-0.3-28
+			c-0.7-8.3-3.7-34-5.5-39.1c-1.3-3.9-4.1-38.9-8.3-51.1c-4.5-13.3-10.8-22.8-17.6-27.6c-0.9-0.6-1.8-1.2-2.7-1.8
+			c-0.8-0.8-1.7-1.5-2.6-2c-11.2-5.9-19.8-4.2-20.6-6.5c-0.4-2.7-0.5-5.5-0.3-8.2c5.9-2.3,11.4-5.5,16.3-9.5
+			c17.2-14.2,24.9-43.9,19.5-63.4c-6.3-23.1-28.6-33.7-51.9-32.4c-30.1,1.7-39.1,21.5-42.2,39.8c-2.7,16-1.1,41.2,13.4,59.5
+			c3.1,3.8,7.3,6.7,12,8.2c-0.2,0.8-0.5,1.5-0.9,2.2l0.1,0.1c-0.2,0.5-0.5,0.9-1,1.1c-0.2,0.1-0.6,0.2-1,0.4c-1.7-2.8-3-4.4-4.4-4.4
+			c-0.9,0.1-1.7,0.4-2.5,0.9c-0.3-0.2-0.6-0.4-0.9-0.5c-1.5-0.6-3.5,0.4-5.8,2.3c-14,3.8-27.5,19.8-31.5,28.8
+			c-5.3,11.8-6.3,19-9.7,30.3c-2.8,9.3-6.1,30.9-6.1,30.9s-19.9,50.2-20.9,55.3c-0.4,2.7-0.1,5.5,1.1,8c-3.6,4-6.2,8.8-7.7,14
+			c-2.4,9,6,18.4,9.7,19.8c3.7,1.4,13.7,2.6,17-8.7c0.1-0.3,0.2-0.6,0.2-0.8c0.2,0.2,0.3,0.3,0.5,0.5c-0.8,9.4-1.6,18.8-2.4,28.2
+			c0,0.3,0.2,0.6,0.6,0.8c-3.9,43.5-6.3,84.1-4.4,88.1c2.4,5.2,4.5,10.7,16.8,17.1c-3.4,5.7-7,10.2-15.7,16.8
+			c-9.3,7.1-13.4,13.5-7.1,19.1c6.2,5.6,22.1,8.9,31.2,3.9c9.1-5,13-16.2,15.9-20.6c1-1.6,1.3-5.2,1.3-9.4
+			c20.8,5.9,39.2,5.8,49.2,4.5c0.1,1.4,0.3,2.9,0.6,4.3c1.7,6.8,0.3,21.2,13.9,26.1c8.7,3.1,23.5-1.7,25.4-6.9s-0.5-13.4-7.2-22.4
+			c-2.5-3.6-4.1-7.7-4.7-12c9.7-2.2,13.4-4.7,16.9-9.2c5.1-6.7,3.6-16.3,5.3-41.4c1.5-22.2,0.5-42.4,0-77.2c2.9,6.9,8.4,10,15,9.3
+			C1723-211.7,1725.1-219.7,1724.5-230.8z M1698.8-242.5c-0.1-2.2-0.1-4.5-0.2-6.9c0.7,2.4,1.2,4,1.2,4S1699.3-244.3,1698.8-242.5
+			L1698.8-242.5z"/>
+		<path id="Path_131_1_" style="fill:#434343;" d="M1834.9-183.9c-1.5-5.3-4.1-10.2-7.7-14.3c1.2-2.5,1.5-5.4,1.1-8.1
+			c-1-5.3-20.9-56.5-20.9-56.5s-3.3-22-6.1-31.5c-3.4-11.5-4.4-19-9.7-31c-4-9.2-17.6-25.5-31.6-29.4c-2.3-1.9-4.4-2.9-5.9-2.4
+			c-0.3,0.1-0.7,0.3-0.9,0.5c-0.7-0.5-1.6-0.8-2.5-0.9c-1.4,0-2.8,1.6-4.5,4.4c-0.4-0.1-0.8-0.3-1-0.4c-0.4-0.3-0.8-0.7-1-1.1
+			l0.1-0.1c-0.4-0.7-0.7-1.5-0.9-2.2c4.7-1.5,8.9-4.4,12.1-8.3c14.6-18.7,16.2-44.5,13.5-60.8c-3.1-18.7-12.1-38.9-42.3-40.6
+			c-23.4-1.4-45.7,9.5-52.1,33c-5.4,19.9,2.3,50.2,19.6,64.7c4.9,4.1,10.5,7.4,16.4,9.7c0.2,2.8,0.1,5.6-0.3,8.4
+			c-0.8,2.3-9.5,0.6-20.7,6.6c-1,0.5-1.9,1.2-2.7,2.1c-1,0.6-1.9,1.2-2.8,1.9c-6.8,4.9-13.1,14.6-17.6,28.2
+			c-4.2,12.5-7,48.3-8.3,52.2c-1.8,5.3-4.7,31.4-5.5,39.9c-0.7,8.5-0.3,28.6-0.3,28.6c-3.7,5-5.9,10.9-6.5,17
+			c-0.7,11.4,1.5,19.6,10.4,20.5c6.6,0.7,12.1-2.5,15-9.5c-0.5,35.5-1.5,56.2,0,78.8c1.7,25.6,0.2,35.5,5.3,42.3
+			c3.5,4.6,7.2,7.2,17,9.4c-0.6,4.4-2.2,8.6-4.7,12.3c-6.8,9.2-9.1,17.6-7.2,22.9c1.9,5.3,16.7,10.2,25.4,7
+			c13.7-5,12.3-19.7,14-26.7c0.3-1.4,0.5-2.9,0.6-4.4c10.1,1.3,28.5,1.4,49.4-4.6c-0.1,4.3,0.2,8,1.3,9.6
+			c2.8,4.6,6.8,15.9,15.9,21.1s25,1.7,31.3-4s2.2-12.3-7.2-19.5c-8.7-6.7-12.3-11.3-15.7-17.1c12.3-6.5,14.4-12.1,16.8-17.4
+			c1.9-4.1-0.5-45.5-4.4-90c0.3-0.2,0.6-0.4,0.6-0.8c-0.8-9.6-1.6-19.2-2.4-28.8c0.2-0.2,0.3-0.3,0.5-0.5c0.1,0.3,0.2,0.6,0.2,0.9
+			c3.3,11.6,13.3,10.3,17.1,8.9C1828.9-165,1837.3-174.6,1834.9-183.9z M1671.9-193.2c-0.1,2.4-0.1,4.7-0.2,7c-0.6-1.9-1-3-1-3
+			S1671.1-190.7,1671.9-193.2z"/>
+		<g id="Group_61_1_" transform="translate(2271.497 -30.516)">
+			<path id="Path_132_1_" style="fill:#FFF0DE;" d="M-652.1-290.2c-6.9,3.6-18.3,26.9-20.1,37c-1.7,10.1-5.4,45.3-5.4,45.3
+				s-8,22.3-11,33.2c-2.4,8.7-6.2,31.4-6.2,31.4s-4.2,8.5-1.1,16.6c4.6,12.2,9,17.4,17.9,18.1c5.2,0.4,6.5-11.7,5-15.8
+				c-3.1-8.8-2.5-10.9-2.5-10.9s7.1-19.4,10.1-27.3c3.1-7.9,12-32.4,12.8-37.8c0.6-4.1,9.4-37.9,11.2-50.8c2-14,3.7-31.3,0.8-38.4
+				C-641.9-293.1-645.8-293.5-652.1-290.2z"/>
+			<path id="Path_133_1_" style="fill:#FFF0DE;" d="M-638.2-314.1c0,0,0.8,15,0,17.3s1.1-2.6-8.6,5.5c-10.1,8.4-19.2,34.8-21.1,49.1
+				c-1.4,10.6,1.9,38.3,1.9,38.3l103.8-4.9c0,0-0.8-61.3-12.4-74.1s-26.3-15.4-29-16.5c-2.6-1.1-4.5-17.7-4.5-17.7L-638.2-314.1z"/>
+			<g id="Group_58_1_" transform="translate(44.783 67.382)">
+				<path id="Path_134_1_" style="fill:#F9C8B0;" d="M-653-384.4c0,0,1.7,11.1,2.9,15.4c-2.7,2.5-9.5,5.8-14.6,6.9
+					c-7.3,1.5-13.1-0.6-18.5-2.2c1.3-4.3,0.1-17,0.1-17L-653-384.4z"/>
+			</g>
+			<path id="Path_135_1_" style="fill:#FFF0DE;" d="M-634.9-411.3c-29.8,2.8-38.1,23.2-40.5,41.8c-2.1,16.2,1.7,46.7,17.3,63.6
+				c10.5,11.4,54.2,11.3,66.8-7.1c12.6-18.5,15.1-47.8,9.1-67.3C-589.2-403.6-611.7-413.5-634.9-411.3z"/>
+			<path id="Path_136_1_" style="fill:#FFF0DE;" d="M-576.1,1.1c0,12.3-1.6,26,0,32.8c1.7,6.9,0.3,21.5,13.8,26.4
+				c8.7,3.2,23.3-1.7,25.2-7c1.9-5.3-0.5-13.6-7.2-22.7c-5.4-7.3-5.5-19.1-5.2-23.8c0.4-4.7,0-16.4,0-16.4L-576.1,1.1z"/>
+			<path id="Path_137_1_" style="fill:#FFF0DE;" d="M-626.9,5.2c0,4.5,2.8,24.8,0,29.3s-6.8,15.8-15.8,20.9c-9,5.1-24.8,1.7-31-3.9
+				s-2.2-12.2,7.1-19.3s12.7-11.9,16.3-18.3c3.6-6.4,2.5-16,2.5-16L-626.9,5.2z"/>
+			<path id="Path_138_1_" style="fill:#572A08;" d="M-620.4-349.9c-4.7,0-9.5-1.1-11.2-2.6c-0.4-0.4-0.5-1-0.1-1.4
+				c0.4-0.4,1-0.5,1.4-0.1c2.2,2,14.8,3.7,18.5-0.2c0.4-0.4,1-0.5,1.4-0.1c0.4,0.4,0.5,1,0.1,1.4c0,0-0.1,0.1-0.1,0.1
+				C-612.3-350.7-616.3-349.9-620.4-349.9z"/>
+			<path id="Path_139_1_" style="fill:#572A08;" d="M-660.2-348.4c-3-0.1-6-0.9-8.7-2.3c-0.5-0.2-0.7-0.8-0.5-1.4
+				c0.2-0.5,0.8-0.7,1.4-0.5c6.2,2.8,9.5,3.1,16.9-0.4c0.5-0.2,1.1,0,1.4,0.5c0.2,0.5,0,1.1-0.5,1.4
+				C-653.4-349.5-656.8-348.6-660.2-348.4z"/>
+			<path id="Path_140_1_" style="fill:#572A08;" d="M-638.6-320c-3.2,0.1-6.3-0.4-9.4-1.3c-0.5-0.2-0.8-0.8-0.6-1.3
+				c0.2-0.5,0.8-0.8,1.3-0.6c2.9,0.9,6,1.3,9.1,1.2c3.9-0.1,6.9-0.8,7.9-2.1c0.3-0.4,1-0.5,1.4-0.2c0.4,0.3,0.5,1,0.2,1.4l0,0
+				c-1.8,2.3-6.1,2.9-9.5,2.9C-638.3-320-638.4-320-638.6-320z"/>
+			<path id="Path_141_1_" style="fill:#572A08;" d="M-589.9-333.3c-0.6,0-1-0.4-1-1c0-0.5,0.4-1,0.9-1c3.1-0.4,8.2-3.9,7.7-14.5
+				c-0.1-1.9-1.2-3.6-3-4.5c-2-1.1-4.4-1-6.3,0.2c-0.5,0.3-1.1,0.1-1.4-0.4c-0.3-0.5-0.1-1.1,0.4-1.4l0,0c2.5-1.6,5.7-1.7,8.3-0.3
+				c2.4,1.2,3.9,3.6,4,6.2c0.5,10.5-4.4,15.9-9.5,16.6C-589.8-333.3-589.9-333.3-589.9-333.3z"/>
+			<path id="Path_142_1_" style="fill:#B03C2C;" d="M-626.2-267.4c-15,13.1-43.4,25.9-43.4,25.9s-6.7,71.8-7,115.8
+				c-0.4,44.6-1.9,67.5-0.2,92.9c1.7,25.4,0.2,35.2,5.2,41.9c5.1,6.8,10.7,9,35,12.4s70.5-6.8,76.1-11.3s3.2-150.4-5.5-208.9
+				c-10.7-71.9-23.7-104.6-32.3-104.8C-602.9-303.6-606.9-284.3-626.2-267.4z"/>
+			<path id="Path_143_1_" style="fill:#782E29;" d="M-600.3-288.5c-3.7,0.1-5.9,5.7-7.4,8.4c-4.4,8.3-9.9,16-16.2,23
+				c-11.5,12.1-26.6,22.1-40.5,30.8c-1.1,0.7-0.1,1.9,0.9,1.2c13-7.9,25.3-16.9,36.8-26.9c6.9-6.3,12.8-13.7,17.5-21.8
+				c1.7-2.9,3.3-5.9,5-8.7c0.7-1.1,2.2-4.3,3.8-4.4C-599.3-287-598.9-288.5-600.3-288.5L-600.3-288.5z"/>
+			<path id="Path_144_1_" style="fill:#B03C2C;" d="M-594.8-303.1c-6.5,2.5-17.5,30.7-29.9,107.5S-646.1-89-647.8-52.9
+				c-1.7,36.1-2.3,76.5,2.8,78.8c5.1,2.3,42.3,7.5,72.8-2.6c30.5-10.2,50.8-23.1,54.2-30.5c3.4-7.3,2.3-115.6-9-162.5
+				s-25.9-113.4-36.1-120.7C-573.4-297.7-589.2-305.2-594.8-303.1z"/>
+			<path id="Path_145_1_" style="fill:#782E29;" d="M-595.2-301.9c-2.7,1.1-4.3,4-5.6,6.4c-2.8,5.4-5,11.1-6.7,16.9
+				c-7.8,24.5-12.4,50.2-16.6,75.5c-5,29.8-10.2,59.5-15.9,89.2c-3.5,18.7-7.1,37.4-8.4,56.4c-1.2,16.6-1.6,33.4-1.2,50
+				c0,6.8,0.5,13.5,1.4,20.2c0.4,2.5,0.8,7.1,3.3,8.4c0.5,0.3,2.4-0.5,1.6-0.9c-2.3-1.2-2.6-6.1-3-8.3c-0.8-5.7-1.2-11.5-1.3-17.3
+				c-0.4-16,0-32,0.9-48c1-18,4-35.8,7.3-53.5c5-26.7,10.1-53.3,14.5-80.1c4.6-27.8,9.1-55.7,16.6-82.8c2-7.7,4.5-15.2,7.7-22.5
+				c1.2-2.7,3.1-7.6,6.2-8.8C-593.2-301.7-594.3-302.3-595.2-301.9L-595.2-301.9z"/>
+			<path id="Path_146_1_" style="fill:#FFF0DE;" d="M-588.8-130.7c-4.5,8.3,1.4,19.5,4.6,21.7c3.3,2.2,12.6,5.8,18.5-4.6
+				c5.9-10.4,11.2-29.2,2-32.5C-572.9-149.2-584.3-139.1-588.8-130.7z"/>
+			<path id="Path_147_1_" style="fill:#B03C2C;" d="M-560.7-291.9c15.1,10.6,24.9,30.9,34.1,50.5c9.4,19.9,22.4,79.7,22.1,96
+				c-0.3,16.5-5.2,66.6-11.9,68.3c-6.8,1.7-26.7-18.8-37.9-40.6c-11.4-22.1-20.6-28.6-18.7-32.3c2.4-4.7,15.7-46.6,15.7-46.6
+				s-8.8-22.1-13.6-30.7c-5.4-9.5-10.1-19.3-14-29.5c-4.1-10.6-9.9-38.2-4.7-40.2C-581.4-300.3-565.5-295.3-560.7-291.9z"/>
+			<path id="Path_148_1_" style="fill:#782E29;" d="M-516.6-80.5c-3.1,0.6-7.3-3.1-9.5-4.9c-4.2-3.5-8-7.5-11.5-11.7
+				c-4.1-4.9-7.8-10-11.1-15.4c-3.6-5.7-6.4-11.8-9.9-17.6c-2.7-4.5-5.6-8.8-8.7-13.1c-1.6-2.3-3.8-4.6-4.8-7.3
+				c-0.6-1.7,0-2.7,0.6-4.2c1-2.4,1.8-4.9,2.7-7.4c2.6-7.4,5-14.9,7.4-22.3c1.1-3.3,2.1-6.6,3.2-9.9c0.7-1.6,1.3-3.3,1.6-5.1
+				c-0.1-1.1-0.5-2.2-1-3.2c-1.5-3.8-3.1-7.5-4.7-11.2c-3.9-9-8.4-17.6-12.9-26.3c-5.5-10.2-9.7-21.1-12.6-32.3
+				c-1.3-5.3-2.2-10.6-2.8-16c-0.2-2.1-1.4-9.8,1.2-11c1.2-0.6,0.1-1.4-0.8-0.9c-2.1,1-2.4,3.5-2.6,5.7c-0.2,4.2,0.2,8.3,0.9,12.4
+				c1.6,10.2,4.5,20.1,8.5,29.6c4.4,10.4,10.3,20,15,30.3c2.1,4.6,4.1,9.3,6.1,14c1.1,2.7,3.2,6,3.6,8.9c-0.1,1-0.3,2-0.7,2.9
+				c-0.9,2.9-1.8,5.8-2.8,8.7c-2.5,7.9-5.1,15.8-7.8,23.7c-1,3-2.1,6.1-3.2,9.1c-0.6,1.4-1.5,2.8-1.2,4.4c0.5,2.3,2.4,4.5,3.7,6.3
+				c2.8,3.9,5.6,7.9,8.2,12c4.3,6.8,7.6,14,11.8,20.8c4,6.4,8.5,12.5,13.5,18.1c3.6,4.2,7.7,8,12.2,11.3c2.5,1.7,5.4,3.5,8.6,2.9
+				C-515-79.6-515.3-80.7-516.6-80.5L-516.6-80.5z"/>
+			<path id="Path_149_1_" style="fill:#572A08;" d="M-642.4-330.9L-642.4-330.9c-3.5-0.2-4.8-1.7-5.3-2.9c-0.9-2.1,0.2-5,2.9-8.1
+				c0.4-0.4,1-0.5,1.4-0.1c0.4,0.4,0.5,1,0.1,1.4c-2.2,2.5-3.1,4.7-2.6,6c0.5,1.2,2.1,1.5,3.4,1.6c0.6,0,1,0.5,0.9,1.1
+				C-641.4-331.3-641.9-330.9-642.4-330.9L-642.4-330.9z"/>
+			<path id="Path_150_1_" style="fill:#572A08;" d="M-627.7-363.9c0.2-0.6,0.6-1.2,1.1-1.6c0.5-0.4,1.1-0.7,1.8-0.9
+				c1.2-0.4,2.5-0.5,3.8-0.4c1.2,0.1,2.5,0.3,3.6,0.7c1.2,0.4,2.3,1,3.3,1.7c-1.2,0-2.4,0-3.6-0.1l-3.5-0.3
+				c-1.1-0.1-2.2-0.1-3.3-0.1C-625.6-364.8-626.8-364.5-627.7-363.9z"/>
+			<path id="Path_151_1_" style="fill:#572A08;" d="M-654-362.9c-1-0.6-2.1-0.9-3.2-0.9c-1.1-0.1-2.2,0-3.3,0.1l-3.5,0.3
+				c-1.2,0.1-2.4,0.2-3.6,0.1c1-0.7,2.1-1.3,3.3-1.7c1.2-0.4,2.4-0.7,3.6-0.7c1.3-0.1,2.6,0,3.8,0.4c0.6,0.2,1.2,0.5,1.8,0.9
+				C-654.7-364.1-654.3-363.5-654-362.9z"/>
+			<g id="Group_60_1_" transform="translate(0 95.202)">
+				<g id="Group_59_1_">
+					<path id="Path_152_1_" style="fill:#EDE8E6;" d="M-592.1-323.9c-5.1-35.8-25.6-55.9-56.5-47.4l0,0l0,0
+						c-23.7,6.5-39,27.3-47.2,51c-6.1,17.8-8.3,41.1,0.1,52c6.2,8,22.2,7.5,28.3,9.4c0.1,0,0.3,0.1,0.4,0.1s0.3,0.1,0.4,0.1
+						c6.7,2,26.9,14.8,41.6,11C-599-254.2-587.7-293.4-592.1-323.9z"/>
+					<path id="Path_153_1_" style="fill:#572A08;" d="M-649.4-367L-649.4-367l0.1,0c12.7-3.2,24.1-1.4,33.4,6.3
+						c9.3,7.7,15.7,21.1,18.1,38.6c1.9,14.8,0.2,29.8-5.1,43.7c-6.9,17.7-16.8,23.7-23.5,25.5c-4.2,1.2-9.8,0.7-16.5-1.2
+						c-5.3-1.6-10.5-3.6-15.5-5.9c-2.4-1.1-4.9-2.1-7.5-3c-0.1,0-0.2-0.1-0.4-0.1l-0.1,0l-0.1,0c-0.1,0-0.2-0.1-0.4-0.1
+						c-2.4-0.5-4.7-0.9-7.1-1.1c-4-0.4-7.9-1-11.8-2c-3.3-0.7-6.3-2.5-8.6-4.9c-4.5-5.6-5.1-14.6-4.9-21c0.4-9.2,2.2-18.3,5.2-27
+						c3.5-10.7,9-20.7,16.1-29.4C-670.5-357.7-660.5-364.1-649.4-367 M-648.5-371.3L-648.5-371.3L-648.5-371.3
+						c-23.8,6.5-39.1,27.4-47.3,51c-6.1,17.8-8.3,41.1,0.1,52c2.5,2.9,5.8,4.9,9.5,5.8c6.8,2.1,14.9,2.4,18.9,3.5
+						c0.1,0,0.3,0.1,0.4,0.1c0.1,0,0.3,0.1,0.4,0.1c4.1,1.2,13.1,6.4,22.9,9.4c6.3,2,13,3,18.6,1.6c26-6.6,37.3-45.7,32.9-76.3
+						C-597.2-359.8-617.7-379.8-648.5-371.3L-648.5-371.3z"/>
+				</g>
+				<path id="Path_154_1_" style="fill:#782E29;" d="M-664.5-274.3c-4.1-0.9-8.4,4.8-9.6,12.7c-0.1,0.5-0.1,0.9-0.2,1.4
+					c2.3,0.3,4.6,0.7,6.9,1.2c0.1,0,0.3,0.1,0.4,0.1s0.3,0.1,0.4,0.1c2.5,0.9,4.9,1.9,7.2,3.1c0.1-0.5,0.2-1,0.3-1.5
+					C-657.7-265.7-660.2-273.4-664.5-274.3z"/>
+				<path id="Path_155_1_" style="fill:#782E29;" d="M-670.6-214.3h-7.4l9.1-57.4l7.9,1.8L-670.6-214.3z"/>
+			</g>
+			<path id="Path_156_1_" style="fill:#FFF0DE;" d="M-694.6-142.1c0,0-6.2,7.2-5.2,16.4c1.4,13,11.3,23.3,20.3,20.3
+				c9.3-3.2,10.8-8.7,9.7-17c-1.3-9.6-6.7-13.1-6.7-13.1L-694.6-142.1z"/>
+		</g>
+	</g>
+</g>
+</svg>

+ 3 - 2
app/pcdl/index.js

@@ -34,7 +34,7 @@ function index_load_collect_new() {
                     "</a></div>";
 
 
-                html += "<div class='collect' style='color:gray'>";
+                html += "<div class='collect'>";
                 if (iterator.collect) {
                     html += "<a href='../article/?collect=" + iterator.collect.id + "'>" + iterator.collect.title + "</a>";
                 } else {
@@ -48,7 +48,8 @@ function index_load_collect_new() {
                     html += "<div>" + iterator.summary + "</div>";
                 }
 
-                html += "<div style=''>" + iterator.username.nickname + "</div>";
+
+                html += "<div style='margin-top:1em;'>" + iterator.username.nickname + "</div>";
 
 
 

+ 35 - 7
app/pcdl/index.php

@@ -27,8 +27,12 @@ require_once '../pcdl/html_head.php';
 			font-weight: 700;
 		}
 
+		/* 
 		.index_list_categories {
 
+			padding: 1rem;
+		}*/
+		.index_list_content {
 			padding: 1rem;
 		}
 
@@ -47,6 +51,11 @@ require_once '../pcdl/html_head.php';
 			padding: 10px;
 		}
 
+		.collect {
+			color: var(--link-color);
+			font-weight: 700;
+		}
+
 		#footer_nav {
 			display: none;
 		}
@@ -76,29 +85,34 @@ require_once '../pcdl/html_head.php';
 		.course_right title {
 			font-size: 120%;
 			font-weight: 700;
+			display: -webkit-box;
+			-webkit-box-orient: vertical;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			-webkit-line-clamp: 2;
 		}
 
 		#course_list_new .card {
-			height: 150px;
+			height: 120px;
+			padding: 0;
+			display: grid;
+			grid-template-columns: 120px 1fr;
 		}
 
 		.card_photo {
-			position: absolute;
-			left: 0;
-			top: 0;
 			height: 100%;
-			width: 150px;
 			background: gray;
 			border-radius: 20px 0 0 20px;
 		}
 
 		.course_right {
-			margin-left: 150px;
+			padding: 10px;
 			display: flex;
 			flex-direction: column;
+			width: calc(100% - 10px);
 		}
 
-		.summary {
+		.subtitle {
 			margin-top: auto;
 			display: -webkit-box;
 			-webkit-box-orient: vertical;
@@ -131,6 +145,12 @@ require_once '../pcdl/html_head.php';
 			grid-area: author;
 			color: gray;
 		}
+
+		.author {
+			text-overflow: ellipsis;
+			overflow: hidden;
+			white-space: nowrap;
+		}
 	</style>
 	<style media="screen and (min-width:800px)">
 		.index_list_content {
@@ -139,8 +159,16 @@ require_once '../pcdl/html_head.php';
 			max-width: 900px;
 		}
 
+		.index_article .index_list_content {
+			background-image: url(img/books.svg);
+			background-repeat: no-repeat;
+		}
+
 		.index_course .index_list_content {
 			flex-direction: row-reverse;
+			background-image: url(img/teachers.svg);
+			background-repeat: no-repeat;
+			background-position-x: right;
 		}
 
 		.title_bar {

+ 1 - 0
app/search/paliword_search.php

@@ -7,6 +7,7 @@ require_once "../public/_pdo.php";
 require_once "../public/load_lang.php";//语言文件
 require_once "../public/function.php";
 require_once "../search/word_function.php";
+require_once "../ucenter/active.php";
 
 _load_book_index();
 

+ 48 - 45
app/ucenter/active.php

@@ -1,58 +1,61 @@
 <?php 
 //统计用户经验值
 require_once '../path.php';
-require_once "../public/_pdo.php";
 require_once "../public/function.php";
 
-define("MAX_INTERVAL",600000);
-
-if(isset($_COOKIE["userid"])){
-	$dns = "sqlite:"._FILE_DB_USER_ACTIVE_;
-    $dbh = new PDO($dns, "", "",array(PDO::ATTR_PERSISTENT=>true));
-	$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);  
-	// 查询上次编辑活跃结束时间
-	$query = "SELECT id, end, start,hit  FROM edit WHERE user_id = ? order by end DESC";
-	$stmt = $dbh->prepare($query);
-	$stmt->execute(array($_COOKIE["userid"]));
-	$row = $stmt->fetch(PDO::FETCH_ASSOC);
-	$new_record = false;
-	$currTime = mTime();
-    if ($row) {
-		//找到,判断是否超时,超时新建,未超时修改
-		$endtime = (int)$row["end"];
-		$id = (int)$row["id"];
-		$start_time = (int)$row["start"];
-		$hit = (int)$row["hit"];
-		if($currTime-$endtime>MAX_INTERVAL){
-			//超时新建
+function add_edit_event($type="",$data=null){
+	define("MAX_INTERVAL",600000);
+	define("MIN_INTERVAL",10000);
+	
+	if(isset($_COOKIE["userid"])){
+		$dns = "sqlite:"._FILE_DB_USER_ACTIVE_;
+		$dbh = new PDO($dns, "", "",array(PDO::ATTR_PERSISTENT=>true));
+		$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);  
+		// 查询上次编辑活跃结束时间
+		$query = "SELECT id, end, start,hit  FROM edit WHERE user_id = ? order by end DESC";
+		$stmt = $dbh->prepare($query);
+		$stmt->execute(array($_COOKIE["userid"]));
+		$row = $stmt->fetch(PDO::FETCH_ASSOC);
+		$new_record = false;
+		$currTime = mTime();
+		if ($row) {
+			//找到,判断是否超时,超时新建,未超时修改
+			$endtime = (int)$row["end"];
+			$id = (int)$row["id"];
+			$start_time = (int)$row["start"];
+			$hit = (int)$row["hit"];
+			if($currTime-$endtime>MAX_INTERVAL){
+				//超时新建
+				$new_record = true;
+			}
+			else{
+				//未超时修改
+				$new_record = false;
+			}
+		} else {
+			//没找到,新建
 			$new_record = true;
 		}
-		else{
-			//未超时修改
-			$new_record = false;
-		}
-    } else {
-		//没找到,新建
-        $new_record = true;
-	}
-
-	if($new_record){
-		$query="INSERT INTO edit ( user_id, start , end  , duration , hit )  VALUES  ( ? , ? , ? , ? , ? ) ";
-		$sth = $dbh->prepare($query);
-		$sth->execute(array($_COOKIE["userid"] , $currTime , $currTime , 10000,1) );
-		if (!$sth || ($sth && $sth->errorCode() != 0)) {
-			$error = $dbh->errorInfo();
+	
+		if($new_record){
+			$query="INSERT INTO edit ( user_id, start , end  , duration , hit )  VALUES  ( ? , ? , ? , ? , ? ) ";
+			$sth = $dbh->prepare($query);
+			$sth->execute(array($_COOKIE["userid"] , $currTime , ($currTime+MIN_INTERVAL) , MIN_INTERVAL,1) );
+			if (!$sth || ($sth && $sth->errorCode() != 0)) {
+				$error = $dbh->errorInfo();
+			}
 		}
-	}
-	else{
-
-		$query="UPDATE edit SET end = ? , duration = ? , hit = ? WHERE id = ? ";
-		$sth = $dbh->prepare($query);
-		$sth->execute( array($currTime,($currTime-$start_time), ($hit+1),$id));
-		if (!$sth || ($sth && $sth->errorCode() != 0)) {
-			$error = $dbh->errorInfo();
+		else{
+	
+			$query="UPDATE edit SET end = ? , duration = ? , hit = ? WHERE id = ? ";
+			$sth = $dbh->prepare($query);
+			$sth->execute( array($currTime,($currTime-$start_time), ($hit+1),$id));
+			if (!$sth || ($sth && $sth->errorCode() != 0)) {
+				$error = $dbh->errorInfo();
+			}
 		}
 	}
 }
 
+
 ?>

+ 108 - 0
app/uhome/foot_step.php

@@ -0,0 +1,108 @@
+<?php
+if(isset($_GET["userid"])){
+	$foot_set_userid = $_GET["userid"];
+}
+else if(isset($_COOKIE["userid"])){
+	$foot_set_userid = $_COOKIE["userid"];
+}
+else{
+	echo "no user id";
+	exit;
+}
+
+include "../pcdl/html_head.php";
+?>
+
+<body>
+
+<?php
+    require_once "../path.php";
+    require_once "../public/_pdo.php";
+    require_once '../public/function.php';
+    require_once '../ucenter/function.php';
+    require_once "../pcdl/head_bar.php";
+    $currChannal = "course";
+    require_once "../uhome/head.php";
+?>
+
+<link href='../lib/fullcalendar/main.css' rel='stylesheet' />
+<script src='../lib/fullcalendar/main.js'></script>
+
+<script>
+
+  document.addEventListener('DOMContentLoaded', function() {
+    var calendarEl = document.getElementById('calendar');
+
+    var calendar = new FullCalendar.Calendar(calendarEl, {
+      headerToolbar: {
+        left: 'prev,next today',
+        center: 'title',
+        right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
+      },
+      editable: true,
+      navLinks: true, // can click day/week names to navigate views
+      dayMaxEvents: true, // allow "more" link when too many events
+      events: {
+        url: 'foot_step_data.php?userid=<?php echo $foot_set_userid;?>',
+        failure: function() {
+          document.getElementById('script-warning').style.display = 'block'
+        }
+      },
+      loading: function(bool) {
+        document.getElementById('loading').style.display =
+          bool ? 'block' : 'none';
+      }
+    });
+
+    calendar.render();
+  });
+
+</script>
+<style>
+
+  body {
+    margin: 0;
+    padding: 0;
+    font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
+    font-size: 14px;
+  }
+
+  #script-warning {
+    display: none;
+    background: #eee;
+    border-bottom: 1px solid #ddd;
+    padding: 0 10px;
+    line-height: 40px;
+    text-align: center;
+    font-weight: bold;
+    font-size: 12px;
+    color: red;
+  }
+
+  #loading {
+    display: none;
+    position: absolute;
+    top: 10px;
+    right: 10px;
+  }
+
+  #calendar {
+    max-width: 1100px;
+    margin: 40px auto;
+    padding: 0 10px;
+  }
+
+</style>
+
+<div class='index_inner'>
+  <div id='script-warning'>
+    <code>php/get-events.php</code> must be running.
+  </div>
+
+  <div id='loading'>loading...</div>
+
+  <div id='calendar'></div>
+</div>
+<?php
+include "../pcdl/html_foot.php";
+?>

+ 82 - 0
app/uhome/foot_step_data.php

@@ -0,0 +1,82 @@
+<?php
+
+//--------------------------------------------------------------------------------------------------
+// This script reads event data from a JSON file and outputs those events which are within the range
+// supplied by the "start" and "end" GET parameters.
+//
+// An optional "timeZone" GET parameter will force all ISO8601 date stings to a given timeZone.
+//
+// Requires PHP 5.2.0 or higher.
+//--------------------------------------------------------------------------------------------------
+
+// Require our Event class and datetime utilities
+require_once '../path.php';
+require_once '../lib/fullcalendar/php/utils.php';
+
+function covertTimeToString($time){
+	$time = (int)$time;
+	if($time<60){
+		return $time."秒";
+	}
+	else if($time<3600){
+		return (floor($time/60))."分钟";
+	}
+	else{
+		$hour = floor($time/3600);
+		$min = floor(($time-($hour*3600))/60);
+		return "{$hour}小时{$min}分钟";
+	}
+}
+
+// Short-circuit if the client did not give us a date range.
+if (!isset($_GET['start']) || !isset($_GET['end'])) {
+  die("Please provide a date range.");
+}
+
+// Parse the start/end parameters.
+// These are assumed to be ISO8601 strings with no time nor timeZone, like "2013-12-29".
+// Since no timeZone will be present, they will parsed as UTC.
+$range_start = parseDateTime($_GET['start']);
+$range_end = parseDateTime($_GET['end']);
+
+// Parse the timeZone parameter if it is present.
+$time_zone = null;
+if (isset($_GET['timeZone'])) {
+  $time_zone = new DateTimeZone($_GET['timeZone']);
+}
+
+// Read and parse our events JSON file into an array of event data arrays.
+$dns = "sqlite:"._FILE_DB_USER_ACTIVE_;
+$dbh = new PDO($dns, "", "",array(PDO::ATTR_PERSISTENT=>true));
+$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);  
+$query = "SELECT id , start, end,duration, hit  FROM edit WHERE user_id = ?";
+$stmt = $dbh->prepare($query);
+$stmt->execute(array($_GET["userid"]));
+$allData = $stmt->fetchAll(PDO::FETCH_ASSOC);
+$input_arrays=array();
+foreach ($allData as $key => $value) {
+	# code...
+	$strDuration = covertTimeToString($value["duration"]/1000)."-".$value["hit"]."次操作";
+	$start = date("Y-m-d\TH:i:s+00:00",$value["start"]/1000);
+	$end = date("Y-m-d\TH:i:s+00:00",$value["end"]/1000);
+	$input_arrays[] = array("id"=>$value["id"],
+					  "title"=>$strDuration,
+					  "start"=>$start,
+					  "end"=>$end);
+}
+
+// Accumulate an output array of event data arrays.
+$output_arrays = array();
+foreach ($input_arrays as $array) {
+
+  // Convert the input array into a useful Event object
+  $event = new Event($array, $time_zone);
+
+  // If the event is in-bounds, add it to the output
+  if ($event->isWithinDayRange($range_start, $range_end)) {
+    $output_arrays[] = $event->toArray();
+  }
+}
+
+// Send JSON to the client.
+echo json_encode($output_arrays);

+ 2 - 0
app/uhome/head.php

@@ -73,7 +73,9 @@
                     echo '<a href="course.php?userid='.$_GET["userid"].'"><span tag="'.$_local->gui->lesson.'">'.$_local->gui->lesson.'</span></a>';
                 }
             ?>
+            <a href="foot_step.php?userid=<?php echo $_GET["userid"];?>">
             <span tag=<?php echo $_local->gui->EXP;?>><?php echo $_local->gui->EXP;?></span>
+            </a>
             <span tag=<?php echo $_local->gui->statistical_data;?>><?php echo $_local->gui->statistical_data;?></span>
         </div>
     </div>

+ 3 - 0
app/usent/sent_post.php

@@ -66,16 +66,19 @@ else{
 }
 
 
+
 PDO_Connect("sqlite:"._FILE_DB_SENTENCE_);
 
 $_id = false;
 if( (isset($_POST["id"]) && empty($_POST["id"])) || !isset($_POST["id"]) ){
+    add_edit_event("sent",array("book"=>$_POST["book"],"para"=>$_POST["para"]));
         # 判断是否已经有了
         $query = "SELECT id FROM sentence WHERE book = ? AND paragraph = ? AND begin = ? AND end = ? AND channal = ? ";
         $_id = PDO_FetchOne($query,array($_POST["book"], $_POST["para"],  $_POST["begin"], $_POST["end"], $_POST["channal"]));
 }
 else{
     $_id = $_POST["id"];
+    add_edit_event("sent",array("id"=>$_POST["id"]));
 }
 
 

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio