Merge branch 'master' of github.com:chamilo/chamilo-lms

pull/5674/head
Yannick Warnier 4 months ago
commit d44eec0271
  1. 48
      assets/css/app.scss
  2. 61
      assets/css/scss/atoms/_messages.scss
  3. 109
      assets/css/scss/atoms/_toast.scss
  4. 4
      assets/locales/ar.json
  5. 4
      assets/locales/ca_ES.json
  6. 6
      assets/locales/de.json
  7. 4
      assets/locales/el.json
  8. 4
      assets/locales/en.json
  9. 4
      assets/locales/es.json
  10. 4
      assets/locales/eu_ES.json
  11. 6
      assets/locales/fr_FR.json
  12. 4
      assets/locales/fur.json
  13. 4
      assets/locales/gl.json
  14. 4
      assets/locales/he_IL.json
  15. 4
      assets/locales/it.json
  16. 3
      assets/locales/lv_LV.json
  17. 4
      assets/locales/nl.json
  18. 4
      assets/locales/oc.json
  19. 4
      assets/locales/pl_PL.json
  20. 3
      assets/locales/pt_PT.json
  21. 4
      assets/locales/ro_RO.json
  22. 4
      assets/locales/sk_SK.json
  23. 4
      assets/locales/sl_SI.json
  24. 5
      assets/vue/components/installer/Step4.vue
  25. 4
      assets/vue/components/installer/Step7.vue
  26. 105
      public/main/install/install.lib.php
  27. 2
      public/main/template/default/admin/index.html.twig
  28. 87
      src/CoreBundle/Controller/Admin/AdminController.php
  29. 6
      src/CoreBundle/Controller/Admin/IndexBlocksController.php
  30. 5
      src/CoreBundle/Controller/ResourceController.php
  31. 5
      src/CoreBundle/DataFixtures/SettingsCurrentFixtures.php
  32. 152
      src/CoreBundle/Resources/views/Admin/files_info.html.twig
  33. 19
      src/CoreBundle/Security/Authorization/Voter/ResourceNodeVoter.php
  34. 2
      src/CoreBundle/Settings/SecuritySettingsSchema.php
  35. 2
      tests/CoreBundle/Controller/ThemeControllerTest.php

@ -742,6 +742,54 @@ form .field {
}
}
.files-info-page {
.form-control {
@apply w-48 p-1 border border-gray-300 rounded;
}
.btn-primary {
@apply bg-primary text-primary-button-text p-1 rounded;
}
.btn-primary:hover {
@apply bg-secondary-hover;
}
.modal {
@apply hidden fixed z-10 left-0 top-0 w-full h-full overflow-auto bg-black bg-opacity-50 pt-16;
}
.modal-content {
@apply bg-white m-auto p-5 border border-gray-300 w-1/3;
}
.close-button {
@apply text-fontdisabled float-right text-2xl font-bold;
}
.close-button:hover,
.close-button:focus {
@apply text-black no-underline cursor-pointer;
}
.pagination {
@apply flex justify-center my-5;
}
.pagination a,
.pagination span {
@apply mx-1 px-4 py-2 text-primary border border-gray-25;
}
.pagination a:hover {
@apply bg-gray-15;
}
.pagination span {
@apply bg-primary text-white border-primary;
}
}
//@import 'primevue-md-light-indigo/theme.css';
//@import '~primevue/resources/primevue.min.css';
//@import '~primeflex/primeflex.css';

@ -2,22 +2,65 @@
@apply mb-4 shadow-sm rounded-md border-0;
&-wrapper {
@apply gap-3.5 py-3 px-4;
@apply flex items-center; // gap-3.5;
}
&-close {
@apply rounded-full transition duration-200 min-w-[1rem] min-h-[1rem];
& &-wrapper {
@apply py-3 px-4;
}
&-icon {
@apply shrink-0;
}
& &-icon {
@apply text-body-1 mr-2;
&:hover {
&:not(.p-message-close-icon) {
@apply w-6 h-6;
}
}
&:focus {
@apply outline-none outline-offset-0 shadow-none;
&-close {
@apply flex items-center justify-center shrink-0; // rounded-full transition duration-200 min-w-[1rem] min-h-[1rem];
&.p-link {
@apply ml-auto overflow-hidden relative;
}
}
&-text {
@apply w-full;
& &-close {
@apply w-8 h-8 rounded-full bg-transparent transition-none outline-transparent
hover:bg-white/50
focus-visible:outline-none focus-visible:outline-offset-0 focus-visible:drop-shadow-lg;
}
&-enter-from {
@apply opacity-0;
}
&-enter-active {
@apply transition-opacity duration-300;
}
&.p-message-leave-from {
@apply max-h-96;
}
&.p-message-leave-to {
@apply max-h-0 opacity-0 m-0;
}
&-leave-active {
@apply overflow-hidden transition;
}
&-leave-active &-close {
@apply hidden;
}
& &-text {
@apply text-body-2 w-full;
a {
@apply font-semibold;
@ -29,7 +72,7 @@
}
&.p-message-info {
@apply bg-primary text-white;
@apply bg-info text-white;
.p-message-icon,
.p-message-close {

@ -1,46 +1,101 @@
$color_1: #01579B;
$color_2: #1B5E20;
$color_3: #7f6003;
$color_4: #B71C1C;
.p-toast {
@apply opacity-95;
@apply whitespace-pre-line break-words opacity-90 w-96;
&.p-toast-top-center, &.p-toast-bottom-center {
@apply -translate-x-1/2;
}
&-message {
@apply rounded-md mb-3.5 shadow-gray-30 shadow-md;
&.p-toast-center {
@apply min-w-5 -translate-x-1/2 -translate-y-1/2;
}
.p-toast-message {
@apply m-0 mb-4 drop-shadow-lg rounded-lg;
&-content {
@apply py-4 px-6 gap-2.5;
&.p-toast-message-enter-from {
@apply opacity-0 translate-y-1/2;
}
&.p-toast-message-leave-from {
@apply max-h-96;
}
&.p-toast-message-leave-to {
@apply max-h-0 opacity-0 mb-0 overflow-hidden;
}
&-enter-active {
transition: transform 0.3s, opacity 0.3s;
}
&-leave-active {
transition: max-height 0.45s cubic-bezier(0, 1, 0, 1), opacity 0.3s, margin-bottom 0.3s;
}
&-info {
@apply bg-primary text-white border-0;
.p-toast-message-icon, .p-toast-icon-close {
@apply text-white;
}
}
&-success {
@apply bg-success text-white border-0;
.p-toast-message-icon, .p-toast-icon-close {
@apply text-white;
}
}
&-warn {
@apply bg-warning bg-gray-90 border-0;
.p-toast-message-icon, .p-toast-icon-close {
@apply bg-gray-90;
}
}
&-error {
@apply bg-error text-white border-0;
.p-toast-message-icon, .p-toast-icon-close {
@apply text-white;
}
}
.p-toast-message-content {
@apply flex items-center p-4 border-0;
.p-toast-message-text {
@apply text-body-1;
@apply flex-auto m-0 ml-4;
}
.p-toast-message-icon {
@apply shrink-0 text-body-1;
&.p-icon {
@apply w-8 h-8;
}
}
.p-toast-summary {
@apply font-semibold;
}
.p-toast-detail {
.p-toast-summary + .p-toast-detail {
@apply m-0 mt-2;
}
}
.p-toast-icon-close {
@apply rounded-full transition duration-200 w-4 h-6
focus:outline-none;
}
@apply flex items-center justify-center overflow-hidden relative w-8 h-8 rounded-lg bg-transparent transition-none outline-none
hover:bg-white/50
focus-visible:outline-none drop-shadow-none;
&.p-toast-message-info {
@apply bg-primary text-white;
}
&.p-toast-message-success {
@apply bg-success text-white;
}
&.p-toast-message-warn {
@apply bg-warning text-gray-90;
}
&.p-toast-message-error {
@apply bg-error text-white;
&.p-link {
@apply cursor-pointer;
}
}
}
}

@ -552,5 +552,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "\u0627\u0633\u062a\u0643\u0634\u0627\u0641 \u0645\u0642\u0631\u0631\u0627\u062a \u0627\u0643\u062b\u0631",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "\u062a\u0648\u062c\u062f \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0628\u0646\u0641\u0633 \u0627\u0644\u0627\u0633\u0645 \u0645\u0633\u0628\u0642\u0627",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "\u0644\u063a\u0631\u0636 \u062d\u0645\u0627\u064a\u0629 \u0645\u0648\u0642\u0639\u0643 \u0641\u0639\u0644\u064a\u0643 \u062c\u0639\u0644 {0} \u0627\u0644\u0645\u0633\u0627\u0631 \u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637 (chmod -R 0555 on Linux) \u0648\u0627\u062d\u0630\u0641 \u0647\u0630\u0627 {1} \u0627\u0644\u0645\u0633\u0627\u0631."
}

@ -532,5 +532,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Una base de dades amb el mateix nom <b>ja existeix</b>. El contingut de la base de dades es perdr\u00e0.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Per protegir la plataforma, fes el directori {0} sencer de nom\u00e9s lectura (chmod 0555 en Linux) i elimina el directori {1}."
}

@ -415,7 +415,7 @@
"Checkbox 1": "Checkbox 1",
"Checkbox 2": "Checkbox 2",
"This is a text example": "This is a text example",
"Show dialog": "Show dialog",
"Show dialog": "Dialog anzeigen",
"Dialog example": "Beispiel f\u00fcr einen Dialog",
"Item 1": "Item 1",
"Item 2": "Item 2",
@ -553,5 +553,7 @@
"Receiver profile picture": "Empf\u00e4ngerprofilbild",
"Carbon copy receiver profile picture": "Empf\u00e4ngerprofilbild in Kopie",
"Explore more courses": "Erkunden Sie weitere Kurse",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Eine Datenbank mit dem gleichen Namen <b>existiert bereits</b>!",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Um Ihre Installation zu sch\u00fctzen, setzen Sie das Verzeichnis {0} auf nur-lesen (oder chmod 0555 auf Linux-basierenden Systemen). Anschlie\u00dfend bitte das Verzeichnis {1} l\u00f6schen."
}

@ -527,5 +527,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "A database with the same name <b>already exists</b>.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "To protect your site, make the whole {0} directory read-only (chmod 0555 on Linux) and delete the {1} directory."
}

@ -553,5 +553,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "Explore more courses",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists<\/b>.": "A database with the same name <b>already exists<\/b>.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "To protect your site, make the whole {0} directory read-only (chmod -R 0555 on Linux) and delete the {1} directory."
}

@ -553,5 +553,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "Explorar m\u00e1s cursos",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Una base de datos con el mismo nombre <b>ya existe</b>. El contenido de la base de datos se perder\u00e1.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Para proteger su instalaci\u00f3n, ponga la carpeta {0} en solo lectura (chmod -R 0555 bajo Linux) y borre completamente la carpeta {1}."
}

@ -511,5 +511,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Bada lehendik izen bereko datu base bat.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Zure webgunea babesteko, sartu ezazu {0} direktorioa irakurtzeko solik (chmod -r0555 Linux-ean) eta ezabatu erabat {1} direktorioa."
}

@ -415,7 +415,7 @@
"Checkbox 1": "Checkbox 1",
"Checkbox 2": "Checkbox 2",
"This is a text example": "This is a text example",
"Show dialog": "Show dialog",
"Show dialog": "Afficher la bo\u00eete de dialogue",
"Dialog example": "Exemple de la bo\u00eete de dialogue",
"Item 1": "Item 1",
"Item 2": "Item 2",
@ -553,5 +553,7 @@
"Receiver profile picture": "Photo de profil du destinataire",
"Carbon copy receiver profile picture": "Photo de profil du destinataire en copie carbone",
"Explore more courses": "Explorer plus de cours",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Une base de donn\u00e9e du m\u00eame nom existe d\u00e9j\u00e0. Si vous utilisez cette base, son contenu actuel sera \u00e9cras\u00e9.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Pour prot\u00e9ger votre installation, mettez le r\u00e9pertoire {0} en lecture seule (chmod -R 0555 sous Linux) et supprimez compl\u00e8tement le r\u00e9pertoire {1}"
}

@ -553,5 +553,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "Explore more courses",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "A database with the same name <b>already exists</b>.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "To protect your site, make the whole {0} directory read-only (chmod -R 0555 on Linux) and delete the {1} directory."
}

@ -553,5 +553,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "Explore more courses",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "A database with the same name <b>already exists</b>.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "To protect your site, make the whole {0} directory read-only (chmod -R 0555 on Linux) and delete the {1} directory."
}

@ -547,5 +547,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "\u05d7\u05e7\u05d5\u05e8 \u05e7\u05d5\u05e8\u05e1\u05d9\u05dd \u05e0\u05d5\u05e1\u05e4\u05d9\u05dd",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "\u05de\u05e1\u05d3 \u05e0\u05ea\u05d5\u05e0\u05d9\u05dd \u05e2\u05dd \u05d0\u05d5\u05ea\u05d5 \u05e9\u05dd <b>\u05db\u05d1\u05e8 \u05e7\u05d9\u05d9\u05dd</b>.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "\u05db\u05d3\u05d9 \u05dc\u05d4\u05d2\u05df \u05e2\u05dc \u05d4\u05d0\u05ea\u05e8 \u05e9\u05dc\u05da, \u05d4\u05e4\u05d5\u05da \u05d0\u05ea \u05db\u05dc \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea {0} \u05dc\u05e7\u05e8\u05d9\u05d0\u05d4 \u05d1\u05dc\u05d1\u05d3 (chmod -R 0555 \u05d1\u05dc\u05d9\u05e0\u05d5\u05e7\u05e1) \u05d5\u05de\u05d7\u05e7 \u05d0\u05ea \u05e1\u05e4\u05e8\u05d9\u05d9\u05ea {1}."
}

@ -537,5 +537,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Un database con lo stesso nome esiste gi\u00e0.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Per proteggere il sito, imposta tutta la cartella {0} in sola lettura (chmod 0555 su Linux) ed elimina la cartella {1}."
}

@ -505,5 +505,6 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Datub\u0101ze ar \u0161\u0101du nosaukumu, jau eksist\u0113"
}

@ -523,5 +523,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Er <b>bestaat al</b> een database met de naam.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Om uw site te beschermen, maak de gehele {0} map alleen-lezen (chmod -R 0555 op Linux) en verwijder de {1} map."
}

@ -553,5 +553,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "Explore more courses",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "A database with the same name <b>already exists</b>.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "To protect your site, make the whole {0} directory read-only (chmod -R 0555 on Linux) and delete the {1} directory."
}

@ -510,5 +510,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Bazy danych o tej samej nazwie ju\u017c istnieje.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Aby zabezpieczy\u0107 swoj\u0105 witryn\u0119, ustaw ca\u0142y katalog {0} tylko do odczytu (chmod 0555 na Linuksie) i usu\u0144 katalog {1}."
}

@ -518,5 +518,6 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Para proteger a sua instala\u00e7\u00e3o, fazer toda a {0} diret\u00f3rio somente leitura (chmod 0555 no Linux) e excluir o {1} diret\u00f3rio."
}

@ -523,5 +523,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "O baza de date cu acelasi nume <b>deja exista</b>.Continutul bazei de date se vor pierde",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Pentru protejarea instalatie sale,puneti foldul {0} doar in citire (chmod -r 0555 bajo Linux) si stergeti complet foldul {1}."
}

@ -530,5 +530,7 @@
"Sender profile picture": "Sender profile picture",
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Datab\u00e1za s rovnak\u00fdm n\u00e1zvom <strong>u\u017e existuje.</strong>",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Ak chcete chr\u00e1ni\u0165 va\u0161u str\u00e1nku, nastavte cel\u00fd adres\u00e1r {0} iba na \u010d\u00edtanie (chmod 0555 na Linuxe) a odstr\u00e1\u0148te {1} adres\u00e1r."
}

@ -552,5 +552,7 @@
"Receiver profile picture": "Receiver profile picture",
"Carbon copy receiver profile picture": "Carbon copy receiver profile picture",
"Explore more courses": "Razi\u0161\u010di ve\u010d te\u010dajev",
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:"
"In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:": "In order to enable the automatic version checking you have to register your portal on chamilo.org. The information obtained by clicking this button is only for internal use and only aggregated data will be publicly available (total number of portals, total number of Chamilo course, total number of Chamilo users, ...) (see {0}). When registering you will also appear on the worldwide list ({1}). If you do not want to appear in this list you have to check the checkbox below. The registration is as easy as it can be: you only have to click this button:",
"A database with the same name <b>already exists</b>.": "Podatkovna baza z istim imenom <b>\u017ee obstaja</b>.",
"To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory.": "Za za\u0161\u010dito va\u0161ih strani naredite celotno mapo {0} zgolj bralno (chmod 0555 za Linux) in odstranite mapo {1} ."
}

@ -132,10 +132,7 @@
:closable="false"
severity="warn"
>
<i18n-t keypath="A database with the name {0}. It will be {1}.">
<b>already exists</b>
<b>deleted</b>
</i18n-t>
<span v-html="t('A database with the name already exists. It will be <b>deleted</b>.')" />
</Message>
<Message

@ -32,10 +32,10 @@
<strong v-t="'Security advice'" />
<i18n-t
keypath="To protect your site, make the whole {0} directory read-only (chmod -R 0555 on Linux) and delete the {1} directory."
keypath="To protect your site, make the whole %s directory read-only (chmod -R 0555 on Linux) and delete the %s directory."
tag="p"
>
<code>var/config/</code>
<code>config/</code>
<code>main/install/</code>
</i18n-t>
</Message>

@ -815,62 +815,65 @@ function display_license_agreement(): array
$license = api_htmlentities(@file_get_contents(api_get_path(SYMFONY_SYS_PATH).'public/documentation/license.txt'));
$activtiesList = [
'Advertising/Marketing/PR',
'Agriculture/Forestry',
'Architecture',
'Banking/Finance',
'Biotech/Pharmaceuticals',
'Business Equipment',
'Business Services',
'Construction',
'Consulting/Research',
'Education',
'Engineering',
'Environmental',
'Government',
'Health Care',
'Hospitality/Lodging/Travel',
'Insurance',
'Legal',
'Manufacturing',
'Media/Entertainment',
'Mortgage',
'Non-Profit',
'Real Estate',
'Restaurant',
'Retail',
'Shipping/Transportation',
'Technology',
'Telecommunications',
'Other',
['Advertising/Marketing/PR'],
['Agriculture/Forestry'],
['Architecture'],
['Banking/Finance'],
['Biotech/Pharmaceuticals'],
['Business Equipment'],
['Business Services'],
['Construction'],
['Consulting/Research'],
['Education'],
['Engineering'],
['Environmental'],
['Government'],
['Health Care'],
['Hospitality/Lodging/Travel'],
['Insurance'],
['Legal'],
['Manufacturing'],
['Media/Entertainment'],
['Mortgage'],
['Non-Profit'],
['Real Estate'],
['Restaurant'],
['Retail'],
['Shipping/Transportation'],
['Technology'],
['Telecommunications'],
['Other'],
];
$rolesList = [
'Administration',
'CEO/President/ Owner',
'CFO',
'CIO/CTO',
'Consultant',
'Customer Service',
'Engineer/Programmer',
'Facilities/Operations',
'Finance/ Accounting Manager',
'Finance/ Accounting Staff',
'General Manager',
'Human Resources',
'IS/IT Management',
'IS/ IT Staff',
'Marketing Manager',
'Marketing Staff',
'Partner/Principal',
'Purchasing Manager',
'Sales/ Business Dev. Manager',
'Sales/ Business Dev.',
'Vice President/Senior Manager',
'Other',
['Administration'],
['CEO/President/ Owner'],
['CFO'],
['CIO/CTO'],
['Consultant'],
['Customer Service'],
['Engineer/Programmer'],
['Facilities/Operations'],
['Finance/ Accounting Manager'],
['Finance/ Accounting Staff'],
['General Manager'],
['Human Resources'],
['IS/IT Management'],
['IS/ IT Staff'],
['Marketing Manager'],
['Marketing Staff'],
['Partner/Principal'],
['Purchasing Manager'],
['Sales/ Business Dev. Manager'],
['Sales/ Business Dev.'],
['Vice President/Senior Manager'],
['Other'],
];
$countriesList = get_countries_list_from_array();
$countriesList = array_map(
fn ($country) => [$country],
get_countries_list_from_array()
);
$languagesList = [
['bulgarian', 'Bulgarian'],

@ -1,4 +1,4 @@
{% set admin_chamilo_announcements_disable = 'announcement.admin_chamilo_announcements_disable'|api_get_setting == 'true' %}
{% set admin_chamilo_announcements_disable = 'admin.admin_chamilo_announcements_disable'|api_get_setting == 'true' %}
{% block content %}
{% autoescape false %}

@ -7,18 +7,27 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Controller\Admin;
use Chamilo\CoreBundle\Controller\BaseController;
use Chamilo\CoreBundle\Entity\ResourceFile;
use Chamilo\CoreBundle\Repository\ResourceNodeRepository;
use Chamilo\CoreBundle\ServiceHelper\AccessUrlHelper;
use Chamilo\CoreBundle\Settings\SettingsManager;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Vich\UploaderBundle\Storage\StorageInterface;
#[Route('/admin')]
class AdminController extends BaseController
{
private const ITEMS_PER_PAGE = 50;
public function __construct(
private readonly AccessUrlHelper $accessUrlHelper,
private EntityManagerInterface $entityManager,
private ResourceNodeRepository $resourceNodeRepository,
private StorageInterface $storage,
private AccessUrlHelper $accessUrlHelper
) {}
#[IsGranted('ROLE_ADMIN')]
@ -38,4 +47,78 @@ class AdminController extends BaseController
return new Response('', Response::HTTP_NO_CONTENT);
}
#[IsGranted('ROLE_ADMIN')]
#[Route('/files_info', name: 'admin_files_info', methods: ['GET'])]
public function listFilesInfo(Request $request): Response
{
$page = $request->query->getInt('page', 1);
$search = $request->query->get('search', '');
$offset = ($page - 1) * self::ITEMS_PER_PAGE;
$queryBuilder = $this->entityManager->getRepository(ResourceFile::class)->createQueryBuilder('rf')
->leftJoin('rf.resourceNode', 'rn')
->leftJoin('rn.resourceLinks', 'rl')
->leftJoin('rl.course', 'c')
->leftJoin('rl.user', 'u')
->addSelect('rn', 'rl', 'c', 'u');
if ($search) {
$queryBuilder->where('rf.title LIKE :search')
->orWhere('rf.originalName LIKE :search')
->orWhere('c.title LIKE :search')
->orWhere('u.username LIKE :search')
->orWhere('rn.uuid LIKE :search')
->setParameter('search', '%' . $search . '%');
}
$queryBuilder->orderBy('rf.id', 'DESC')
->setFirstResult($offset)
->setMaxResults(self::ITEMS_PER_PAGE);
$files = $queryBuilder->getQuery()->getResult();
$totalItemsQuery = $this->entityManager->getRepository(ResourceFile::class)
->createQueryBuilder('rf')
->leftJoin('rf.resourceNode', 'rn')
->leftJoin('rn.resourceLinks', 'rl')
->leftJoin('rl.course', 'c')
->leftJoin('rl.user', 'u')
->select('COUNT(rf.id)');
if ($search) {
$totalItemsQuery->where('rf.title LIKE :search')
->orWhere('rf.originalName LIKE :search')
->orWhere('c.title LIKE :search')
->orWhere('u.username LIKE :search')
->orWhere('rn.uuid LIKE :search')
->setParameter('search', '%' . $search . '%');
}
$totalItems = $totalItemsQuery->getQuery()->getSingleScalarResult();
$totalPages = ceil($totalItems / self::ITEMS_PER_PAGE);
$fileUrls = [];
$filePaths = [];
foreach ($files as $file) {
$resourceNode = $file->getResourceNode();
if ($resourceNode) {
$fileUrls[$file->getId()] = $this->resourceNodeRepository->getResourceFileUrl($resourceNode);
$creator = $resourceNode->getCreator();
} else {
$fileUrls[$file->getId()] = null;
$creator = null;
}
$filePaths[$file->getId()] = $this->resourceNodeRepository->getFilename($file);
}
return $this->render('@ChamiloCore/Admin/files_info.html.twig', [
'files' => $files,
'fileUrls' => $fileUrls,
'filePaths' => $filePaths,
'totalPages' => $totalPages,
'currentPage' => $page,
'search' => $search,
]);
}
}

@ -566,6 +566,12 @@ class IndexBlocksController extends BaseController
'label' => $this->translator->trans('Colors'),
];
$items[] = [
'class' => 'item-file-info',
'url' => '/admin/files_info',
'label' => $this->translator->trans('File info'),
];
return $items;
}

@ -146,9 +146,10 @@ class ResourceController extends AbstractResourceController implements CourseCon
$user = $this->userHelper->getCurrent();
$firstResourceLink = $resourceNode->getResourceLinks()->first();
if ($firstResourceLink && $user) {
$firstResourceFile = $resourceNode->getResourceFiles()->first();
if ($firstResourceLink && $user && $firstResourceFile) {
$resourceLinkId = $firstResourceLink->getId();
$url = $resourceNode->getResourceFiles()->first()->getOriginalName();
$url = $firstResourceFile->getOriginalName();
$downloadRepository = $entityManager->getRepository(TrackEDownloads::class);
$downloadRepository->saveDownload($user->getId(), $resourceLinkId, $url);
}

@ -1302,6 +1302,11 @@ class SettingsCurrentFixtures extends Fixture implements FixtureGroupInterface
'title' => 'Time limit for password reset token',
'comment' => 'The number of seconds before the generated token automatically expires and cannot be used anymore (a new token needs to be generated).',
],
[
'name' => 'access_to_personal_file_for_all',
'title' => 'Access to personal file for all',
'comment' => 'Allows access to all personal files without restriction',
],
],
'tracking' => [
[

@ -0,0 +1,152 @@
{% extends "@ChamiloCore/Layout/layout_one_col.html.twig" %}
{% block content %}
<div class="files-info-page">
<h1>{{ 'File Information'|trans }}</h1>
<form method="get" action="{{ path('admin_files_info') }}" style="display: flex; justify-content: flex-end; margin-bottom: 20px;">
<input type="text" name="search" value="{{ search }}" placeholder="{{ 'Search...'|trans }}" class="form-control" style="margin-right: 10px;">
<button type="submit" class="btn btn--primary">{{ 'Search'|trans }}</button>
</form>
<table class="data_table">
<thead>
<tr>
<th>{{ 'Title'|trans }}</th>
<th>{{ 'Original Name'|trans }}</th>
<th>{{ 'Course'|trans }}</th>
<th>{{ 'User'|trans }}</th>
<th>{{ 'Actions'|trans }}</th>
</tr>
</thead>
<tbody>
{% for file in files %}
<tr>
<td>{{ file.title }}</td>
<td>{{ file.originalName }}</td>
<td>
{% if file.resourceNode and file.resourceNode.resourceLinks|length > 0 %}
{{ file.resourceNode.resourceLinks|first.course.title ?? 'N/A' }}
{% else %}
{{ 'N/A'|trans }}
{% endif %}
</td>
<td>
{% if file.resourceNode and file.resourceNode.resourceLinks|length > 0 %}
{{ file.resourceNode.resourceLinks|first.user.username ?? 'N/A' }}
{% elseif file.resourceNode and file.resourceNode.creator %}
{{ file.resourceNode.creator.username ?? 'N/A' }}
{% else %}
{{ 'N/A'|trans }}
{% endif %}
</td>
<td>
<a href="#" class="open-modal"
data-title="{{ file.title }}"
data-mime-type="{{ file.mimeType }}"
data-original-name="{{ file.originalName }}"
data-size="{{ file.size }}"
data-course="{% if file.resourceNode and file.resourceNode.resourceLinks|length > 0 %}{{ file.resourceNode.resourceLinks|first.course.title ?? 'N/A' }}{% else %}{{ 'N/A'|trans }}{% endif %}"
data-user="{% if file.resourceNode and file.resourceNode.resourceLinks|length > 0 %}{{ file.resourceNode.resourceLinks|first.user.username ?? 'N/A' }}{% elseif file.resourceNode and file.resourceNode.creator %}{{ file.resourceNode.creator.username ?? 'N/A' }}{% else %}{{ 'N/A'|trans }}{% endif %}"
data-file-url="{{ fileUrls[file.id] }}"
data-file-path="{{ filePaths[file.id] }}">
{{ 'View'|trans }}
</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="pagination">
{% if currentPage > 1 %}
<a href="{{ path('admin_files_info', {'page': currentPage - 1, 'search': search}) }}">&laquo; {{ 'Previous'|trans }}</a>
{% endif %}
{% for i in max(1, currentPage - 2)..min(totalPages, currentPage + 2) %}
{% if i == currentPage %}
<span>{{ i }}</span>
{% else %}
<a href="{{ path('admin_files_info', {'page': i, 'search': search}) }}">{{ i }}</a>
{% endif %}
{% endfor %}
{% if currentPage < totalPages %}
<a href="{{ path('admin_files_info', {'page': currentPage + 1, 'search': search}) }}">{{ 'Next'|trans }} &raquo;</a>
{% endif %}
</div>
<!-- Modal -->
<div id="fileInfoModal" class="modal">
<div class="modal-content">
<span class="close-button">&times;</span>
<h2>{{ 'File Information'|trans }}</h2>
<p class="mt-3 mb-3"><strong>{{ 'Title:'|trans }}</strong> <span id="file-title"></span></p>
<p class="mb-3"><strong>{{ 'MIME Type:'|trans }}</strong> <span id="file-mime-type"></span></p>
<p class="mb-3"><strong>{{ 'Original Name:'|trans }}</strong> <span id="file-original-name"></span></p>
<p class="mb-3"><strong>{{ 'Size:'|trans }}</strong> <span id="file-size"></span></p>
<p class="mb-3"><strong>{{ 'Course:'|trans }}</strong> <span id="file-course"></span></p>
<p class="mb-3"><strong>{{ 'User:'|trans }}</strong> <span id="file-user"></span></p>
<p class="mb-3"><strong>{{ 'File Path:'|trans }}</strong> <span id="file-path"></span>&nbsp;&nbsp;&nbsp;<button id="copy-path" class="mdi mdi-content-copy"></button></p>
<p class="mb-3"><strong>{{ 'File Link:'|trans }}</strong> <a href="#" id="file-url" target="_blank">{{ 'Open File'|trans }}</a></p>
</div>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
var modal = document.getElementById("fileInfoModal");
var span = document.getElementsByClassName("close-button")[0];
var copyPathButton = document.getElementById('copy-path');
document.querySelectorAll('.open-modal').forEach(function(button) {
button.onclick = function(event) {
event.preventDefault();
var title = button.getAttribute('data-title');
var mimeType = button.getAttribute('data-mime-type');
var originalName = button.getAttribute('data-original-name');
var size = button.getAttribute('data-size');
var course = button.getAttribute('data-course');
var user = button.getAttribute('data-user');
var filePath = button.getAttribute('data-file-path');
var fileUrl = button.getAttribute('data-file-url');
document.getElementById('file-title').textContent = title;
document.getElementById('file-mime-type').textContent = mimeType;
document.getElementById('file-original-name').textContent = originalName;
document.getElementById('file-size').textContent = size + ' bytes';
document.getElementById('file-course').textContent = course;
document.getElementById('file-user').textContent = user;
document.getElementById('file-path').textContent = filePath;
document.getElementById('file-url').href = fileUrl;
modal.style.display = "block";
};
});
span.onclick = function() {
modal.style.display = "none";
};
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
};
copyPathButton.onclick = function() {
var filePath = document.getElementById('file-path').textContent;
navigator.clipboard.writeText(filePath).then(function() {
copyPathButton.classList.remove('mdi-content-copy');
copyPathButton.classList.add('mdi-check');
setTimeout(function() {
copyPathButton.classList.remove('mdi-check');
copyPathButton.classList.add('mdi-content-copy');
}, 2000);
}, function(err) {
alert('Failed to copy: ', err);
});
};
});
</script>
{% endblock %}

@ -11,6 +11,7 @@ use Chamilo\CoreBundle\Entity\ResourceLink;
use Chamilo\CoreBundle\Entity\ResourceNode;
use Chamilo\CoreBundle\Entity\ResourceRight;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Settings\SettingsManager;
use Chamilo\CourseBundle\Entity\CGroup;
use ChamiloSession;
use Laminas\Permissions\Acl\Acl;
@ -41,14 +42,11 @@ class ResourceNodeVoter extends Voter
public const ROLE_CURRENT_COURSE_SESSION_TEACHER = 'ROLE_CURRENT_COURSE_SESSION_TEACHER';
public const ROLE_CURRENT_COURSE_SESSION_STUDENT = 'ROLE_CURRENT_COURSE_SESSION_STUDENT';
private RequestStack $requestStack;
private Security $security;
public function __construct(Security $security, RequestStack $requestStack)
{
$this->security = $security;
$this->requestStack = $requestStack;
}
public function __construct(
private Security $security,
private RequestStack $requestStack,
private SettingsManager $settingsManager
) {}
public static function getReaderMask(): int
{
@ -170,6 +168,11 @@ class ResourceNodeVoter extends Voter
if (0 === $groupId && $firstLink->getGroup() instanceof CGroup) {
$groupId = (int) $firstLink->getGroup()->getIid();
}
if ($firstLink->getUser() instanceof UserInterface
&& 'true' === $this->settingsManager->getSetting('security.access_to_personal_file_for_all')
) {
return true;
}
}
$linkFound = 0;

@ -42,6 +42,7 @@ class SecuritySettingsSchema extends AbstractSettingsSchema
'allow_online_users_by_status' => '',
'security_session_cookie_samesite_none' => 'false',
'anonymous_autoprovisioning' => 'false',
'access_to_personal_file_for_all' => 'false',
]
);
$allowedTypes = [
@ -161,6 +162,7 @@ class SecuritySettingsSchema extends AbstractSettingsSchema
)
->add('security_session_cookie_samesite_none', YesNoType::class)
->add('anonymous_autoprovisioning', YesNoType::class)
->add('access_to_personal_file_for_all', YesNoType::class)
;
$this->updateFormFieldsFromSettingsInfo($builder);

@ -24,7 +24,7 @@ class ThemeControllerTest extends WebTestCase
{
$client = static::createClient();
$client->request('GET', '/themes/chamilo/default.css');
$client->request('GET', '/themes/chamilo/nonexistent.css');
$this->assertResponseStatusCodeSame(Response::HTTP_NOT_FOUND);
}

Loading…
Cancel
Save