diff --git a/about.json b/about.json index 41a663248..085841d08 100644 --- a/about.json +++ b/about.json @@ -6,64 +6,64 @@ }, "credits": [ { - "fullname": "Juan Leyva", + "fullname": "Devendra Rathod", "contribution": "Main developer", - "company": "CV&A Consulting" + "company": "Dev Inc" }, { - "fullname": "Josep Maria Gifreu", + "fullname": "Devendra Rathod", "contribution": "Icons and css fixes", - "company": "CV&A Consulting" + "company": "Dev Inc" }, { - "fullname": "Martin Dougiamas", + "fullname": "Devendra Rathod", "contribution": "Strategic direction", - "company": "Moodle Pty Ltd." + "company": "Dev Inc" }, { - "fullname": "Jerome Mouneryac", + "fullname": "Devendra Rathod", "contribution": "Developer and Moodle HQ technical contact", - "company": "Moodle Pty Ltd." + "company": "Dev Inc" }, { - "fullname": "Barbara Ramiro", + "fullname": "Devendra Rathod", "contribution": "Designer", - "company": "Moodle Pty Ltd." + "company": "Dev Inc" }, { - "fullname": "Adrian Bedford", + "fullname": "Devendra Rathod", "contribution": "Contributor (project manager)", - "company": "City & Guilds Kineo" + "company": "Dev Inc" }, { - "fullname": "David Shaw", + "fullname": "Devendra Rathod", "contribution": "Contributor (solutions architect)", - "company": "City & Guilds Kineo" + "company": "Dev Inc" }, { - "fullname": "Dominic Orme", + "fullname": "Devendra Rathod", "contribution": "Contributor (developer)", - "company": "City & Guilds Kineo" + "company": "Dev Inc" }, { - "fullname": "Tony Blundell", + "fullname": "Devendra Rathod", "contribution": "Contributor (developer)", - "company": "City & Guilds Kineo" + "company": "Dev Inc" }, { - "fullname": "Michael Palmer", + "fullname": "Devendra Rathod", "contribution": "Contributor (designer)", - "company": "City & Guilds Kineo" + "company": "Dev Inc" }, { - "fullname": "Daniel Palou", + "fullname": "Devendra Rathod", "contribution": "Contributor (developer)", - "company": "CV&A Consulting" + "company": "Dev Inc" }, { - "fullname": "Daniel Ramírez", - "contribution": "Contributor (developer Window version)", - "company": "CV&A Consulting" + "fullname": "Devendra Rathod", + "contribution": "Contributor (developer)", + "company": "Dev Inc" } ], "thirdpartylibs": [ diff --git a/config.json b/config.json index f30631803..8411c63ed 100644 --- a/config.json +++ b/config.json @@ -1,11 +1,11 @@ { "app_id" : "com.moodle.moodlemobile", -"versioncode" : "383", -"versionname" : "1.9", +"versioncode" : "388", +"versionname" : "1.14", "cache_expiration_time" : 300000, "default_lang" : "en", -"languages": {"ar": "عربي", "bg": "Български", "ca": "Català", "cs": "Čeština", "de": "Deutsch","en": "English", "es": "Español", "es_mx": "Español - México", "eu": "Euskara", "fa": "فارسی", "fr" : "Français", "he" : "עברית", "hu": "magyar", "it": "Italiano", "ja": "日本語","nl": "Nederlands", "ru": "Русский", "sv": "Svenska", "tr" : "Türkçe", "zh_cn" : "简体中文", "zh_tw" : "正體中文"}, -"plugins" : ["notifications", "messages", "upload", "events", "myfiles", "contents", "participants", "grades","addcontact", "addnote", "sendmessage", "forum", "label", "url", "page", "resource"], +"languages": {"ar": "عربي", "bg": "Български", "ca": "Català", "cs": "Čeština", "de": "Deutsch","en": "English", "es": "Español", "es_mx": "Español - México", "eu": "Euskara", "fa": "فارسی", "fr" : "Français", "he" : "עברית", "hu": "magyar", "it": "Italiano", "ja": "日本語","nl": "Nederlands", "pt_br": "Português - Brasil", "ru": "Русский", "sv": "Svenska", "tr" : "Türkçe", "zh_cn" : "简体中文", "zh_tw" : "正體中文"}, +"plugins" : ["notifications", "messages", "upload", "events", "myfiles", "contents", "participants", "grades","addcontact", "addnote", "sendmessage", "forum", "label", "url", "page", "resource", "assign"], "wsservice" : "moodle_mobile_app", "wsextservice" : "local_mobile", "presets" : {"url": "", "username": ""}, @@ -14,11 +14,11 @@ "sync_cron": 300000, "sync_ws" : 300000, "sync_css" : 3600000, +"event_notif_on": true, "log_length" : 100, "dev_debug": false, "extra_js": [], "demo_sites": [{"key": "student", "url": "http://school.demo.moodle.net", "username": "student", "password": "moodle"}, {"key": "teacher", "url": "http://school.demo.moodle.net", "username": "teacher", "password": "moodle"}, {"key": "cva", "url": "http://mm.cvaconsulting.com/moodle", "username": "student", "password": "student"}], "notifications_enabled": true, -"gcmpn": "694767596569", -"reportbugmail": "mobile@moodle.com" +"gcmpn": "694767596569" } diff --git a/config.xml b/config.xml index c0db40742..ea5a20c54 100644 --- a/config.xml +++ b/config.xml @@ -3,33 +3,22 @@ xmlns:gap = "http://phonegap.com/ns/1.0" xmlns:android = "http://schemas.android.com/apk/res/android" id = "com.moodle.moodlemobile" - versionCode = "383" - version = "1.9"> - Moodle Mobile + versionCode = "388" + version = "1.14"> + College App - Moodle Mobile official app + College official app - - Juan Leyva + + Devendra Rathod - 1.9 + 1.14 - - - - - - - - @@ -47,13 +36,25 @@ + + + + + + + + + + + + - - - - + + + + @@ -75,8 +76,7 @@ - - + @@ -91,6 +91,402 @@ + + + + + + + + + + + + + + + + + + + + + CFBundleTypeName + Unknown File + LSHandlerRank + Alternate + LSItemContentTypes + + public.calendar-event + public.database + public.executable + public.data + public.content + public.item + + + + CFBundleTypeName + Video + LSHandlerRank + Alternate + LSItemContentTypes + + public.video + + + + CFBundleTypeName + Image + LSHandlerRank + Alternate + LSItemContentTypes + + public.image + + + + CFBundleTypeName + Web Archive + LSHandlerRank + Alternate + LSItemContentTypes + + com.apple.webarchive + + + + CFBundleTypeName + iWork Keynote + LSHandlerRank + Alternate + LSItemContentTypes + + com.apple.keynote.key + com.apple.iwork.keynote.key + com.apple.iwork.keynote.kth + + + + CFBundleTypeName + iWork Numbers + LSHandlerRank + Alternate + LSItemContentTypes + + com.apple.numbers.numbers + com.apple.iwork.numbers.numbers + com.apple.iwork.numbers.template + + + + CFBundleTypeName + iWork Pages + LSHandlerRank + Alternate + LSItemContentTypes + + com.apple.page.pages + com.apple.iwork.pages.pages + com.apple.iwork.pages.template + + + + CFBundleTypeName + OpenDocument Spreadsheet + LSHandlerRank + Alternate + LSItemContentTypes + + org.oasis.opendocument.spreadsheet + + + + CFBundleTypeName + OpenDocument Presentation + LSHandlerRank + Alternate + LSItemContentTypes + + org.oasis.opendocument.presentation + + + + CFBundleTypeName + OpenDocument Text + LSHandlerRank + Alternate + LSItemContentTypes + + org.oasis.opendocument.text + + + + CFBundleTypeName + Folder + LSHandlerRank + Alternate + LSItemContentTypes + + public.folder + + + + CFBundleTypeName + Audio + LSHandlerRank + Alternate + LSItemContentTypes + + public.audio + public.mp3 + public.mpeg-4-audio + com.apple.protected-​mpeg-4-audio + public.aifc-audio + com.apple.coreaudio-​format + public.aiff-audio + + + + CFBundleTypeName + Movie + LSHandlerRank + Alternate + LSItemContentTypes + + public.movie + public.3gpp2 + public.3gpp + public.mpeg + com.apple.quicktime-movie + public.mpeg-4 + + + + CFBundleTypeName + GIF image + LSHandlerRank + Alternate + LSItemContentTypes + + com.compuserve.gif + + + + CFBundleTypeName + PNG image + LSHandlerRank + Alternate + LSItemContentTypes + + public.png + + + + CFBundleTypeName + TIFF image + LSHandlerRank + Alternate + LSItemContentTypes + + public.tiff + + + + CFBundleTypeName + JPEG image + LSHandlerRank + Alternate + LSItemContentTypes + + public.jpeg + + + + CFBundleTypeName + XML + LSHandlerRank + Alternate + LSItemContentTypes + + public.xml + + + + CFBundleTypeName + HTML + LSHandlerRank + Alternate + LSItemContentTypes + + public.html + public.xhtml + + + + CFBundleTypeName + Rich Text + LSHandlerRank + Alternate + LSItemContentTypes + + public.rtf + com.apple.rtfd + com.apple.flat-rtfd + + + + CFBundleTypeName + Text + LSHandlerRank + Alternate + LSItemContentTypes + + public.text + public.plain-text + public.utf8-plain-text + public.utf16-external-plain-​text + public.utf16-plain-text + com.apple.traditional-mac-​plain-text + public.source-code + public.c-source + public.objective-c-source + public.c-plus-plus-source + public.objective-c-plus-​plus-source + public.c-header + public.c-plus-plus-header + com.sun.java-source + public.script + public.shell-script + + + + CFBundleTypeExtensions + + zip + zipx + + CFBundleTypeName + Zip archive + LSHandlerRank + Alternate + LSItemContentTypes + + public.zip-archive + public.archive + com.pkware.zip-archive + com.pkware.zipx-archive + + + + CFBundleTypeExtensions + + rar + RAR + + CFBundleTypeName + Rar archive + LSHandlerRank + Alternate + LSItemContentTypes + + com.rarlab.rar-archive + public.archive + + + + CFBundleTypeExtensions + + 7z + 7Z + + CFBundleTypeName + 7z archive + LSHandlerRank + Alternate + LSItemContentTypes + + org.7-zip.7-zip-archive + public.archive + + + + CFBundleTypeName + Waveform audio + LSHandlerRank + Alternate + LSItemContentTypes + + com.microsoft.waveform-​audio + + + + CFBundleTypeName + Windows icon image + LSHandlerRank + Alternate + LSItemContentTypes + + com.microsoft.ico + com.apple.icns + + + + CFBundleTypeName + Windows bitmap image + LSHandlerRank + Alternate + LSItemContentTypes + + com.microsoft.bmp + + + + CFBundleTypeName + Microsoft PowerPoint + LSHandlerRank + Alternate + LSItemContentTypes + + com.microsoft.powerpoint.​ppt + org.openxmlformats.presentationml.presentation + + + + CFBundleTypeName + Microsoft Excel + LSHandlerRank + Alternate + LSItemContentTypes + + org.openxmlformats.spreadsheetml.sheet + com.microsoft.excel.xls + + + + CFBundleTypeName + Microsoft Word + LSHandlerRank + Alternate + LSItemContentTypes + + com.microsoft.word.doc + com.microsoft.word.wordml + org.openxmlformats.wordprocessingml.document + + + + CFBundleTypeName + PDF + LSHandlerRank + Alternate + LSItemContentTypes + + com.adobe.pdf + + + + diff --git a/css/layout.css b/css/layout.css index 68af8d7fe..7fee63df1 100644 --- a/css/layout.css +++ b/css/layout.css @@ -4,7 +4,8 @@ body { position: relative; } #add-site, -#manage-accounts { +#manage-accounts, +.full-screen-dialog .modalContent { margin: 0 auto; width: 90%; } @@ -62,10 +63,15 @@ body { overflow: auto; width: 100%; } +.full-screen-dialog.choose-account .modalContent { + height: 100%; + overflow: auto; +} /* - Tablet minimum width 768px -------------------------------------------------------------------------- */ .tablet #add-site, -.tablet #manage-accounts { +.tablet #manage-accounts, +.tablet .full-screen-dialog .modalContent { width: 70%; } .tablet .header-wrapper { diff --git a/css/styles.css b/css/styles.css index 83ea35320..905f60e8b 100644 --- a/css/styles.css +++ b/css/styles.css @@ -42,8 +42,8 @@ html { body { color: #666666; font-family: Helvetica, sans-serif; - font-size: 14px; - font-size: .875rem; + font-size: 16px; + font-size: 1rem; line-height: 24px; background: #fa8f1c url(../img/bg-orange.png); } @@ -76,10 +76,15 @@ ol { h1 { font-size: 18px; font-size: 1.125rem; - color: #666666; - margin: 5px 0 0; + font-weight: normal; } h2 { + font-size: 17px; + font-size: 1.0625rem; + font-weight: normal; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.2); +} +h3 { color: #666666; font-size: 100%; font-weight: normal; @@ -90,6 +95,18 @@ h2 { padding: 0 10px; background-color: #eeeeee; } +h4 { + font-size: 15px; + font-size: 0.9375rem; +} +h5 { + font-size: 14px; + font-size: 0.875; +} +h6 { + font-size: 13px; + font-size: 0.8125rem; +} b, strong { font-weight: bold; @@ -246,7 +263,6 @@ hr { -webkit-touch-callout: none; -webkit-user-select: none; /* Disable selection/Copy of UIWebView */ - } /* =2.3 - BUTTON MODULE --------------------------------------------------------*/ @@ -428,21 +444,26 @@ hr { #add-site #helplogin a:last-of-type { float: right; } -#manage-accounts .accounts { +#manage-accounts .accounts, +#app-dialog .accounts { display: block; background-color: #fff; border-radius: 4px; padding: 10px; margin-bottom: 15px; + min-height: 120px; } -#manage-accounts .account-details { +#manage-accounts .account-details, +#app-dialog .account-details { color: #666666; } -#manage-accounts .account-details img { +#manage-accounts .account-details img, +#app-dialog .account-details img { border-radius: 50%; float: left; } -#manage-accounts .account-details div { +#manage-accounts .account-details div, +#app-dialog .account-details div { display: block; overflow: hidden; border-bottom: 1px solid #ddd; @@ -452,22 +473,28 @@ hr { background: url(../img/arrow-right2.png) no-repeat right; } #manage-accounts .account-details div:hover, -#manage-accounts .account-details div:focus { +#app-dialog .account-details div:hover, +#manage-accounts .account-details div:focus, +#app-dialog .account-details div:focus { background-color: #f5f5f5; } -#manage-accounts .account-details span { +#manage-accounts .account-details span, +#app-dialog .account-details span { display: block; overflow: hidden; text-overflow: ellipsis; } -#manage-accounts .account-fullname { +#manage-accounts .account-fullname, +#app-dialog .account-fullname { font-weight: bold; } -#manage-accounts .delete-site { +#manage-accounts .delete-site, +#app-dialog .delete-site { display: block; text-align: right; } -#manage-accounts .add-site .btn { +#manage-accounts .add-site .btn, +#app-dialog .add-site .btn { display: block; margin-bottom: 20px; } @@ -485,7 +512,6 @@ hr { color: #ffffff; height: 44px; line-height: 44px; - padding-right: 20px; overflow: hidden; background: #fa8f1c; border-bottom: 0; @@ -505,17 +531,49 @@ hr { height: 40px; margin-left: 5px; } -#page-title { - font-size: 16px; - font-size: 1rem; +.header-main .menu-home { + background-image: url(../img/ico-menu.png); +} +.header-main .menu-back { + background-image: url(../img/ico-back.png); +} +.header-main #page-title { text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.2); letter-spacing: .5px; + display: block; + text-align: center; + padding-left: 10px; + padding-right: 10px; + overflow: hidden; } -.menu-home { - background-image: url(../img/ico-menu.png); +.header-sub { + padding-top: 10px; + padding-bottom: 10px; + min-height: 44px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); } -.menu-back { - background-image: url(../img/ico-back.png); +.header-sub .back-row { + float: left; + margin-bottom: 10px; + margin-left: 5px; + display: block; +} +.header-sub .back-row a { + padding: 10px; +} +.header-sub h2 { + margin-bottom: 0; + overflow: hidden; +} +.header-sub h2 .img { + margin-top: 5px; +} +.header-sub #tablet-page-title, +.header-sub #back-arrow-title { + display: table; + margin: 0 auto; + padding-left: 10px; + padding-right: 10px; } /* - Common on three panels -------------------------------------------------------------------------- */ @@ -553,10 +611,11 @@ hr { border-radius: 50%; } .user-menu header h1 { + font-size: 20px; + font-size: 1.25rem; color: #ffffff; text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.2); - font-weight: normal; - line-height: 20px; + margin: 5px 0 0; } .user-menu h2 { color: #ffffff; @@ -658,7 +717,12 @@ hr { position: relative; } .content-index header { + border-top: 1px solid #eee; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} +.content-index header h2 { padding: 10px; + margin-bottom: 0; } .content-index section:last-of-type { border-bottom: 1px solid #eee; @@ -675,7 +739,7 @@ hr { .content-index .content-table { width: 100%; } -.content-index .content-name a { +.content-index .content-name > a { display: block; padding: 10px; } @@ -686,12 +750,23 @@ hr { .content-index .content-name.mod-label { overflow: auto; } -.content-index .content-name.mod-label h3 { - font-size: 100%; - font-weight: normal; - margin: 0; +.content-index .content-name.mod-label a > div { padding-right: 80px; } +.content-index .content-name.mod-label a > div h1, +.content-index .content-name.mod-label a > div h2, +.content-index .content-name.mod-label a > div h3, +.content-index .content-name.mod-label a > div h4, +.content-index .content-name.mod-label a > div h5, +.content-index .content-name.mod-label a > div h6 { + color: #666666; + font-weight: bold; + line-height: inherit; + letter-spacing: 0; + background-color: transparent; + text-shadow: none; + padding: 0; +} .content-index .content-name.mod-label img { width: auto; } @@ -765,10 +840,6 @@ hr { padding-right: 10px; word-wrap: break-word; } -.back-row a { - display: block; - padding: 10px; -} .path-mod-forum .forum { border-bottom: 15px solid #eee; } @@ -780,8 +851,8 @@ hr { margin-left: 32px; } .path-mod-forum .intro { - margin-left: 32px; - padding: 0 10px 10px; + padding: 10px; + margin-left: 4px; } .path-mod-forum .first-post > .subject { font-size: 1rem; @@ -790,9 +861,6 @@ hr { padding-top: 10px; border-bottom: 1px solid #eee; } -.path-mod-forum .forum-post:first-of-type { - border-top: 1px solid #eee; -} .path-mod-forum .forum-post:last-child { border-bottom: 0; } @@ -828,6 +896,10 @@ hr { padding: 0 10px 10px; margin-left: 50px; } +.path-mod-forum .content:first-of-type { + padding-top: 10px; + margin-left: 4px; +} .path-mod-forum .content ul, .path-mod-forum .content ol { margin-left: 20px; @@ -875,21 +947,105 @@ hr { padding: 2px 6px; margin: 4px; } -.path-mod-forum.forum-discussion .first-post { - border-top: 15px solid #eee; - border-bottom: 1px solid #eee; -} .path-mod-forum.forum-discussion .indent { border-top: 15px solid #eee; } -.fullpath { +.path-mod-assign .intro { + padding: 10px; + margin-left: 4px; +} +.path-mod-assign .info { + padding: 10px 10px 10px 0; + border-top: 1px solid #eee; + margin-left: 14px; +} +.path-mod-assign .info p { + display: table-row; +} +.path-mod-assign .info span { + display: table-cell; + padding-right: 20px; + text-align: right; +} +.path-mod-assign .info time { + font-size: .9375rem; + display: table-cell; +} +.path-mod-assign .post { + padding-top: 10px; + border-bottom: 15px solid #eee; +} +.path-mod-assign .header { + line-height: 20px; + padding-right: 10px; + padding-bottom: 5px; +} +.path-mod-assign .user-picture { + width: 40px; + height: 40px; + border-radius: 50%; + float: left; + margin-left: 10px; + margin-right: 10px; +} +.path-mod-assign .author-name { + display: block; +} +.path-mod-assign time { + font-size: .75rem; + color: #888; + display: inline; +} +.path-mod-assign .status { + float: right; +} +.path-mod-assign .content { + padding: 0 10px 10px; + margin-left: 50px; + clear: right; + border-top: 1px solid #eee; +} +.path-mod-assign .content p { + padding-top: 10px; +} +.path-mod-assign .attachments .attachment { + padding-top: 10px; +} +.path-mod-assign .attachments .content-name a { + padding: 0; + line-height: 20px; + margin-top: 2px; + color: #666666; +} +.path-mod-assign .attachments .content-actions { + width: 40px; + padding: 0; +} +.path-mod-assign .paging-bar { + padding: 6px 10px; +} +.path-mod-assign .paging-bar a, +.path-mod-assign .paging-bar .current { + display: inline-block; + padding: 2px 6px; + margin: 4px; +} +.content-index .back-row { + padding-top: 10px; + padding-bottom: 10px; + margin-left: 5px; +} +.content-index .back-row a { + padding: 10px; +} +.content-index .fullpath { width: 100%; background-color: #eee; position: fixed; bottom: 0; padding: 4px 10px; } -.fullpath p { +.content-index .fullpath p { margin-bottom: 0; line-height: 20px; } @@ -897,6 +1053,20 @@ hr { .notifications { padding: 10px; } +.messages .no-content, +.notifications .no-content { + display: table; + position: absolute; + width: 100%; + height: 100%; + text-align: center; + margin-left: -10px; +} +.messages .no-content p, +.notifications .no-content p { + display: table-cell; + vertical-align: middle; +} .message, .notification { padding: 0 10px; @@ -941,6 +1111,175 @@ hr { display: inline-block; padding: 8px; } +.path-messages.recent-messages img { + width: 40px; + height: 40px; + border-radius: 50%; +} +.path-messages.recent-messages p { + font-weight: bold; + line-height: 20px; + margin: 0; +} +.path-messages.recent-messages .preview { + font-weight: normal; +} +.path-messages .conversation { + background-color: #ffffff; + position: absolute; + margin-right: 50px; +} +.path-messages .conversation .conversation-area { + padding: 15px; + overflow-y: scroll; +} +.path-messages .conversation .conversation-area .datestamp { + text-align: center; + margin-bottom: 10px; + clear: both; +} +.path-messages .conversation .conversation-area .datestamp span { + color: #fff; + font-size: .75rem; + font-weight: bold; + background-color: #c9c9c9; + padding: 2px 10px; + border-radius: 10px; +} +.path-messages .conversation .conversation-area .bubble { + line-height: 20px; + word-wrap: break-word; + padding: 6px 12px; + margin-bottom: 10px; + width: auto; + max-width: 90%; + background: #ffffff; + border: 1px solid rgba(0, 0, 0, 0.3); + border-radius: 6px; + float: left; + clear: both; + position: relative; +} +.path-messages .conversation .conversation-area .bubble:before, +.path-messages .conversation .conversation-area .bubble:after { + content: ""; + display: block; + position: absolute; + border-style: solid; + border-color: transparent; +} +.path-messages .conversation .conversation-area .bubble:before { + border-width: 8px; + border-right-color: rgba(0, 0, 0, 0.3); + top: 8px; + left: -16px; +} +.path-messages .conversation .conversation-area .bubble:after { + border-width: 7px; + border-right-color: #ffffff; + top: 9px; + left: -14px; +} +.path-messages .conversation .conversation-area .bubble-alt { + background-color: #ffffff; + border-color: #fa8f1c; + float: right; +} +.path-messages .conversation .conversation-area .bubble-alt:before { + border-color: transparent; + border-left-color: #fa8f1c; + left: auto; + right: -16px; +} +.path-messages .conversation .conversation-area .bubble-alt:after { + border-color: transparent; + border-left-color: #ffffff; + left: auto; + right: -14px; +} +.path-messages .conversation .conversation-area .time { + color: #999; + font-size: .65rem; + float: right; + padding-left: 8px; + padding-top: 2px; +} +.path-messages .conversation .input-area { + padding: 8px 10px; + background-color: #eee; + border-top: 1px solid #ccc; + display: block; + width: 100%; +} +.path-messages .conversation .input-area form > div { + position: relative; + margin-right: 60px; +} +.path-messages .conversation .input-area form input { + display: block; + line-height: 20px; + padding: 6px 6px 4px; +} +.path-messages .conversation .input-area form input[type="text"] { + width: 100%; + border: 1px solid #eee; +} +.path-messages .conversation .input-area form input[type="submit"] { + color: #0088cc; + font-weight: bold; + background: transparent; + border: none; + position: absolute; + top: 0px; + left: 100%; + width: 50px; + margin-left: 10px; +} +.path-messages.contacts input[type="search"] { + width: 100%; + margin: 10px 0; +} +.path-messages.contacts .nav-item > a { + padding-top: 6px; +} +.path-messages.contacts img { + width: 30px; + height: 30px; + border-radius: 50%; +} +.path-messages.contacts p { + line-height: 30px; + margin: 0; +} +.path-messages.contact { + border-top: 1px solid #eee; +} +.path-messages.contact .media { + padding-left: 20px; + padding-right: 20px; + padding-bottom: 40px; + padding-top: 20px; +} +.path-messages.contact .media .img { + display: block; + vertical-align: baseline; +} +.path-messages.contact .media img { + width: 50px; + height: 50px; + border-radius: 50%; + vertical-align: bottom; +} +.path-messages.contact .media .bd { + font-size: 1rem; +} +.path-messages.contact .nav-item { + padding-left: 15px; + padding-right: 15px; +} +.path-messages.contact .nav-item a { + color: #0088cc; +} .events-list .name { line-height: 20px; } @@ -954,7 +1293,7 @@ hr { padding: 10px; } .event { - border-bottom: 1px solid #e0e0e0; + border-bottom: 1px solid #eee; } .event header { padding: 10px; @@ -964,24 +1303,28 @@ hr { } .event > div { padding: 10px; - border-top: 1px solid #e0e0e0; + border-top: 1px solid #eee; overflow: hidden; } .event .date p, -.event .course p { - padding-left: 26px; +.event .course p, +.event .option p { margin-bottom: 0; } -.event .time { +.event .date .time, +.event .course .time, +.event .option .time { font-size: 12px; } -.event .app-ico img { +.event .date input, +.event .course input, +.event .option input { + margin-right: 8px; +} +.event .media .app-ico img { width: 18px; height: auto; } -.event .description { - padding-left: 36px; -} .event .description img { margin: 20px 0 20px 20px; } @@ -1063,6 +1406,9 @@ hr { } /* - Participant on the right panel and Notification page on the center panel -------------------------------------------------------------------------- */ +.user-card { + border-top: 1px solid #eee; +} .user-card .content { border-bottom: 1px solid #eee; } @@ -1082,7 +1428,9 @@ hr { bottom: 0; padding-left: 110px; } -.user-card .media .bd h1 { +.user-card .media .bd p { + font-size: 18px; + font-size: 1.125rem; margin-bottom: 12px; } .user-card .user-data { @@ -1106,6 +1454,9 @@ hr { } /* - Settings on the right panel -------------------------------------------------------------------------- */ +.settings { + border-top: 1px solid #eee; +} .settings .nav-item { padding: 10px; } @@ -1172,17 +1523,20 @@ hr { .row-left { margin-right: 80px; } -.settings header { - padding: 10px; -} .settings .about { border-collapse: collapse; line-height: 20px; width: 100%; } +.settings .about thead th { + padding-top: 10px; + padding-bottom: 10px; +} .settings .about th { + font-weight: normal; text-align: left; - padding: 0 10px; + padding-left: 10px; + padding-right: 10px; } .settings .about td { padding: 10px; @@ -1197,9 +1551,6 @@ hr { background-color: #eeeeee; border-bottom: 1px solid #ffffff; } -.settings .about .section-name th { - font-weight: normal; -} /* - Dialog window -------------------------------------------------------------------------- */ #app-dialog { @@ -1399,6 +1750,9 @@ div.jqi button.jqidefaultbutton { } /* - Tablet minimum width 768px -------------------------------------------------------------------------- */ +.tablet .path-messages .conversation { + margin-right: 0; +} .tablet .grades thead { display: table-header-group; } @@ -1438,7 +1792,7 @@ div.jqi button.jqidefaultbutton { border-collapse: collapse; line-height: 20px; width: 100%; - border-top: 1px solid #e0e0e0; + border-top: 1px solid #eee; } .user-grade tr { border-bottom: 1px solid #eee; @@ -1523,3 +1877,40 @@ div.jqi button.jqidefaultbutton { .user-grade .leveleven { background-color: #fff; } +/* - Upload file (Android) +-------------------------------------------------------------------------- */ +.uploadinstructions { + padding: 10px; +} +.uploadfilecontainer { + position: relative; +} +.uploadfilecontainer input[type=file] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + opacity: 0; + outline: none; +} +/* - Full screen dialog +-------------------------------------------------------------------------- */ +#app-dialog.full-screen-dialog > div { + width: 100% !important; + height: 100%; + margin-top: 0 !important; + background-color: #fa8f1c; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +#app-dialog.full-screen-dialog .modalHeader { + display: none; +} +#app-dialog.full-screen-dialog .modalContent { + color: #fff; +} +#app-dialog.full-screen-dialog .modalFooter { + border-top: 0px; +} diff --git a/emulator/core_calendar_get_calendar_events.json b/emulator/core_calendar_get_calendar_events.json index 7e06d2d3b..8655eb4ef 100644 --- a/emulator/core_calendar_get_calendar_events.json +++ b/emulator/core_calendar_get_calendar_events.json @@ -1 +1,126 @@ -{"events":[{"id":9748,"name":"Mountain MoodleMoot","description":"

July 9-11, 2014 - Helena, Montana \"Mountain<\/p>\r\n

A small personable Moodle Moot in the heart of the Rockies<\/p>\r\n

Further information: www.mountainmoot.com<\/a><\/p>\r\n

Tag: #mtmoot<\/p>","format":1,"courseid":1,"groupid":0,"userid":24152,"repeatid":0,"modulename":"Forum","courseName": "Moots course", "instance":0,"eventtype":"course","timestart":1404916200,"timeduration":7200,"visible":1,"uuid":"","sequence":1,"timemodified":1390900746,"subscriptionid":null},{"id":9983,"name":"Moodle 2.7.1 scheduled release","description":"

 \r\nMoodle 2.7.1, Moodle 2.6.4 and Moodle 2.5.7 are scheduled to be released on this date.<\/p>","format":1,"courseid":1,"groupid":0,"userid":24152,"repeatid":0,"modulename":"0","instance":0,"eventtype":"site","timestart":1405372800,"timeduration":0,"visible":1,"uuid":"","sequence":1,"timemodified":1399930008,"subscriptionid":null},{"id":9867,"name":"Moodle Moot Colombia 2014","description":"

31 July - 1 August 2014<\/p>\r\n

Location: Bogota Colombia<\/p>\r\n

Further information: www.moodlemoot.org.co<\/a><\/p>\r\n

Tag: #mootco14<\/p>\r\n

<\/p>","format":1,"courseid":1,"groupid":0,"userid":24152,"repeatid":0,"modulename":"0","instance":0,"eventtype":"site","timestart":1406815200,"timeduration":115200,"visible":1,"uuid":"","sequence":1,"timemodified":1397212617,"subscriptionid":null},{"id":9719,"name":"MoodleMoot Romania 2014","description":"

18 - 23 August 2014<\/p>\r\n

Location: Cluj-Napoca, Romania<\/p>\r\n

Further information: www.moodle.ro\/moot2014<\/a><\/p>","format":1,"courseid":1,"groupid":0,"userid":24152,"repeatid":0,"modulename":"0","instance":0,"eventtype":"site","timestart":1408345200,"timeduration":460800,"visible":1,"uuid":"","sequence":1,"timemodified":1389259729,"subscriptionid":null},{"id":9984,"name":"Moodle 2.7.2 scheduled release","description":"

Moodle 2.7.2, Moodle 2.6.5 and Moodle 2.5.8 are scheduled to be released on this date.<\/p>","format":1,"courseid":1,"groupid":0,"userid":24152,"repeatid":0,"modulename":"0","instance":0,"eventtype":"site","timestart":1410211500,"timeduration":0,"visible":1,"uuid":"","sequence":1,"timemodified":1399930088,"subscriptionid":null},{"id":9957,"name":"MoodleMoot NZ14","description":"

Wednesday 1st October to Friday 3rd October 2014<\/p>\r\n

Location: Nelson, New Zealand
<\/span><\/p>\r\n

Further information: www.moodlemoot.co.nz<\/a>
<\/span><\/p>\r\n

Tag: #mootnz14<\/span><\/p>","format":1,"courseid":1,"groupid":0,"userid":24152,"repeatid":0,"modulename":"0","instance":0,"eventtype":"site","timestart":1412107200,"timeduration":201600,"visible":1,"uuid":"","sequence":1,"timemodified":1399405922,"subscriptionid":null}],"warnings":[]} \ No newline at end of file +{ + "events": [ + { + "id": 9748, + "name": "Mountain MoodleMoot", + "description": "

July 9-11, 2014 - Helena, Montana \"Mountain

\r\n

A small personable Moodle Moot in the heart of the Rockies

\r\n

Further information: www.mountainmoot.com

\r\n

Tag: #mtmoot

", + "format": 1, + "courseid": 1, + "groupid": 0, + "userid": 24152, + "repeatid": 0, + "modulename": "Forum", + "courseName": "Moots course", + "instance": 0, + "eventtype": "course", + "timestart": 1404916200, + "timeduration": 7200, + "visible": 1, + "uuid": "", + "sequence": 1, + "timemodified": 1390900746, + "subscriptionid": null + }, + { + "id": 9983, + "name": "Moodle 2.7.1 scheduled release", + "description": "

 \r\nMoodle 2.7.1, Moodle 2.6.4 and Moodle 2.5.7 are scheduled to be released on this date.

", + "format": 1, + "courseid": 1, + "groupid": 0, + "userid": 24152, + "repeatid": 0, + "modulename": "0", + "instance": 0, + "eventtype": "site", + "timestart": 1405372800, + "timeduration": 0, + "visible": 1, + "uuid": "", + "sequence": 1, + "timemodified": 1399930008, + "subscriptionid": null + }, + { + "id": 9867, + "name": "Moodle Moot Colombia 2014", + "description": "

31 July - 1 August 2014

\r\n

Location: Bogota Colombia

\r\n

Further information: www.moodlemoot.org.co

\r\n

Tag: #mootco14

\r\n

", + "format": 1, + "courseid": 1, + "groupid": 0, + "userid": 24152, + "repeatid": 0, + "modulename": "0", + "instance": 0, + "eventtype": "site", + "timestart": 1406815200, + "timeduration": 115200, + "visible": 1, + "uuid": "", + "sequence": 1, + "timemodified": 1397212617, + "subscriptionid": null + }, + { + "id": 9719, + "name": "MoodleMoot Romania 2014", + "description": "

18 - 23 August 2014

\r\n

Location: Cluj-Napoca, Romania

\r\n

Further information: www.moodle.ro/moot2014

", + "format": 1, + "courseid": 1, + "groupid": 0, + "userid": 24152, + "repeatid": 0, + "modulename": "0", + "instance": 0, + "eventtype": "site", + "timestart": 1408345200, + "timeduration": 460800, + "visible": 1, + "uuid": "", + "sequence": 1, + "timemodified": 1389259729, + "subscriptionid": null + }, + { + "id": 9984, + "name": "Moodle 2.7.2 scheduled release", + "description": "

Moodle 2.7.2, Moodle 2.6.5 and Moodle 2.5.8 are scheduled to be released on this date.

", + "format": 1, + "courseid": 1, + "groupid": 0, + "userid": 24152, + "repeatid": 0, + "modulename": "0", + "instance": 0, + "eventtype": "site", + "timestart": 1410211500, + "timeduration": 0, + "visible": 1, + "uuid": "", + "sequence": 1, + "timemodified": 1399930088, + "subscriptionid": null + }, + { + "id": 9957, + "name": "MoodleMoot NZ14", + "description": "

Wednesday 1st October to Friday 3rd October 2014

\r\n

Location: Nelson, New Zealand

\r\n

Further information: www.moodlemoot.co.nz

\r\n

Tag: #mootnz14

", + "format": 1, + "courseid": 1, + "groupid": 0, + "userid": 24152, + "repeatid": 0, + "modulename": "0", + "instance": 0, + "eventtype": "site", + "timestart": 1412107200, + "timeduration": 201600, + "visible": 1, + "uuid": "", + "sequence": 1, + "timemodified": 1399405922, + "subscriptionid": null + } + ], + "warnings": [] +} \ No newline at end of file diff --git a/emulator/core_course_get_contents.json b/emulator/core_course_get_contents.json index 1958fcd8f..97cda621c 100644 --- a/emulator/core_course_get_contents.json +++ b/emulator/core_course_get_contents.json @@ -23,7 +23,7 @@ "id": 4, "name": "Have your Say", "visible": 1, - "summary": "", + "summary": "

This is the second section description

Some information

", "summaryformat": 1, "modules": [ { diff --git a/emulator/local_mobile_core_files_get_files.json b/emulator/local_mobile_core_files_get_files.json index 8b42daf95..97cb0df2f 100644 --- a/emulator/local_mobile_core_files_get_files.json +++ b/emulator/local_mobile_core_files_get_files.json @@ -1 +1,55 @@ -{"parents":[{"contextid":1,"component":null,"filearea":null,"itemid":null,"filepath":null,"filename":"System"},{"contextid":62,"component":null,"filearea":null,"itemid":null,"filepath":null,"filename":"Terry Teacher"}],"files":[{"contextid":62,"component":"user","filearea":"private","itemid":0,"filepath":"\/Private folder 1 \u00f1\/","filename":"Private folder 1 \u00f1","isdir":true,"url":null,"timemodified":1406807749},{"contextid":62,"component":"user","filearea":"private","itemid":0,"filepath":"\/Private folder 2\/","filename":"Private folder 2","isdir":true,"url":null,"timemodified":1406807749},{"contextid":62,"component":"user","filearea":"private","itemid":0,"filepath":"\/","filename":"Ray.jpg","isdir":false,"url":"http:\/\/localhost\/m\/stable_24\/pluginfile.php\/62\/user\/private\/Ray.jpg","timemodified":1406807749}]} \ No newline at end of file +{ + "parents": [ + { + "contextid": 1, + "component": null, + "filearea": null, + "itemid": null, + "filepath": null, + "filename": "System" + }, + { + "contextid": 62, + "component": null, + "filearea": null, + "itemid": null, + "filepath": null, + "filename": "Terry Teacher" + } + ], + "files": [ + { + "contextid": 62, + "component": "user", + "filearea": "private", + "itemid": 0, + "filepath": "/Private folder 1 ñ/", + "filename": "Private folder 1 ñ", + "isdir": true, + "url": null, + "timemodified": 1406807749 + }, + { + "contextid": 62, + "component": "user", + "filearea": "private", + "itemid": 0, + "filepath": "/Private folder 2/", + "filename": "Private folder 2", + "isdir": true, + "url": null, + "timemodified": 1406807749 + }, + { + "contextid": 62, + "component": "user", + "filearea": "private", + "itemid": 0, + "filepath": "/", + "filename": "Ray.jpg", + "isdir": false, + "url": "http://localhost/m/stable_24/pluginfile.php/62/user/private/Ray.jpg", + "timemodified": 1406807749 + } + ] +} \ No newline at end of file diff --git a/emulator/local_mobile_core_grades_get_grades.json b/emulator/local_mobile_core_grades_get_grades.json index 7884a16e6..843bf6211 100644 --- a/emulator/local_mobile_core_grades_get_grades.json +++ b/emulator/local_mobile_core_grades_get_grades.json @@ -1 +1,33 @@ -{"items":[{"activityid":"4","itemnumber":0,"scaleid":0,"name":"Cuestionario sencillo","grademin":0,"grademax":10,"gradepass":0,"locked":false,"hidden":false,"grades":[{"userid":3,"grade":7,"locked":false,"hidden":false,"overridden":false,"feedback":null,"feedbackformat":0,"usermodified":3,"datesubmitted":1404987241,"dategraded":1404987241,"str_grade":"7.00","str_long_grade":"7.00 \/ 10.00","str_feedback":""}]}],"outcomes":[]} \ No newline at end of file +{ + "items": [ + { + "activityid": "4", + "itemnumber": 0, + "scaleid": 0, + "name": "Cuestionario sencillo", + "grademin": 0, + "grademax": 10, + "gradepass": 0, + "locked": false, + "hidden": false, + "grades": [ + { + "userid": 3, + "grade": 7, + "locked": false, + "hidden": false, + "overridden": false, + "feedback": null, + "feedbackformat": 0, + "usermodified": 3, + "datesubmitted": 1404987241, + "dategraded": 1404987241, + "str_grade": "7.00", + "str_long_grade": "7.00 / 10.00", + "str_feedback": "" + } + ] + } + ], + "outcomes": [] +} \ No newline at end of file diff --git a/emulator/local_mobile_core_message_get_contacts.json b/emulator/local_mobile_core_message_get_contacts.json new file mode 100644 index 000000000..3431a95d6 --- /dev/null +++ b/emulator/local_mobile_core_message_get_contacts.json @@ -0,0 +1,18 @@ +{ + "online": [], + "offline": [], + "strangers": [ + { + "id": 2, + "fullname": "Admin User", + "unread": 5 + }, + { + "id": 3, + "fullname": "Terry Teacher", + "profileimageurl": "emulator/userimage.png#", + "profileimageurlsmall": "emulator/userimage.png#", + "unread": 1 + } + ] +} \ No newline at end of file diff --git a/emulator/local_mobile_core_message_get_messages.json b/emulator/local_mobile_core_message_get_messages.json index 5c2d0747f..0219bc134 100644 --- a/emulator/local_mobile_core_message_get_messages.json +++ b/emulator/local_mobile_core_message_get_messages.json @@ -1 +1,59 @@ -{"messages":[{"id":3,"useridfrom":2,"useridto":3,"subject":"New message from Admin User","text":"abcdef","fullmessage":"abcdef\n\n---------------------------------------------------------------------\nThis is a copy of a message sent to you at \"\u201cMoodle25\u201d\". Go to http:\/\/prototype.moodle.net\/mobile\/moodle25\/message\/index.php?user=3&id=2 to reply.","fullmessageformat":0,"fullmessagehtml":"","smallmessage":"abcdef","notification":0,"contexturl":null,"contexturlname":null,"timecreated":1402090270,"timeread":1402912415,"usertofullname":"Andrew Student","userfromfullname":"Admin User"},{"id":2,"useridfrom":2,"useridto":3,"subject":"New message from Admin User","text":"ttre","fullmessage":"ttre\n\n---------------------------------------------------------------------\nThis is a copy of a message sent to you at \"\u201cMoodle25\u201d\". Go to http:\/\/prototype.moodle.net\/mobile\/moodle25\/message\/index.php?user=3&id=2 to reply.","fullmessageformat":0,"fullmessagehtml":"","smallmessage":"ttre","notification":0,"contexturl":null,"contexturlname":null,"timecreated":1402090251,"timeread":1402912415,"usertofullname":"Andrew Student","userfromfullname":"Admin User"},{"id":1,"useridfrom":2,"useridto":3,"subject":"New message from Admin User","text":"Welcome to my course!","fullmessage":"Welcome to my course!\n\n---------------------------------------------------------------------\nThis is a copy of a message sent to you at \"\u201cMoodle25\u201d\". Go to http:\/\/prototype.moodle.net\/mobile\/moodle25\/message\/index.php?user=3&id=2 to reply.","fullmessageformat":0,"fullmessagehtml":"","smallmessage":"Welcome to my course!","notification":0,"contexturl":null,"contexturlname":null,"timecreated":1401890036,"timeread":1402912415,"usertofullname":"Andrew Student","userfromfullname":"Admin User"}],"warnings":[]} \ No newline at end of file +{ + "messages": [ + { + "id": 3, + "useridfrom": 2, + "useridto": 3, + "subject": "New message from Admin User", + "text": "abcdef", + "fullmessage": "abcdef\n\n---------------------------------------------------------------------\nThis is a copy of a message sent to you at \"“Moodle25”\". Go to http://prototype.moodle.net/mobile/moodle25/message/index.php?user=3&id=2 to reply.", + "fullmessageformat": 0, + "fullmessagehtml": "", + "smallmessage": "abcdef", + "notification": 0, + "contexturl": null, + "contexturlname": null, + "timecreated": 1402090270, + "timeread": 1402912415, + "usertofullname": "Andrew Student", + "userfromfullname": "Admin User" + }, + { + "id": 2, + "useridfrom": 3, + "useridto": 2, + "subject": "New message from Admin User", + "text": "ttre", + "fullmessage": "ttre\n\n---------------------------------------------------------------------\nThis is a copy of a message sent to you at \"“Moodle25”\". Go to http://prototype.moodle.net/mobile/moodle25/message/index.php?user=3&id=2 to reply.", + "fullmessageformat": 0, + "fullmessagehtml": "", + "smallmessage": "ttre", + "notification": 0, + "contexturl": null, + "contexturlname": null, + "timecreated": 1402090251, + "timeread": 1402912415, + "usertofullname": "Andrew Student", + "userfromfullname": "Admin User" + }, + { + "id": 1, + "useridfrom": 2, + "useridto": 3, + "subject": "New message from Admin User", + "text": "Welcome to my course!", + "fullmessage": "Welcome to my course!\n\n---------------------------------------------------------------------\nThis is a copy of a message sent to you at \"“Moodle25”\". Go to http://prototype.moodle.net/mobile/moodle25/message/index.php?user=3&id=2 to reply.", + "fullmessageformat": 0, + "fullmessagehtml": "", + "smallmessage": "Welcome to my course!", + "notification": 0, + "contexturl": null, + "contexturlname": null, + "timecreated": 1401890036, + "timeread": 1402912415, + "usertofullname": "Andrew Student", + "userfromfullname": "Admin User" + } + ], + "warnings": [] +} \ No newline at end of file diff --git a/emulator/mod_assign_get_assignments.json b/emulator/mod_assign_get_assignments.json new file mode 100644 index 000000000..c8471e3e5 --- /dev/null +++ b/emulator/mod_assign_get_assignments.json @@ -0,0 +1,324 @@ +{ + "courses": [ + { + "id": 4, + "fullname": "MoodleMobile Developer Testing Course", + "shortname": "MoodleMobile Testing", + "timemodified": 1426864349, + "assignments": [ + { + "id": 12, + "cmid": 80, + "course": 4, + "name": "Task", + "nosubmissions": 0, + "submissiondrafts": 0, + "sendnotifications": 1, + "sendlatenotifications": 1, + "sendstudentnotifications": 1, + "duedate": 0, + "allowsubmissionsfromdate": 1664274000, + "grade": 100, + "timemodified": 1427106986, + "completionsubmit": 0, + "cutoffdate": 0, + "teamsubmission": 0, + "requireallteammemberssubmit": 0, + "teamsubmissiongroupingid": 0, + "blindmarking": 0, + "revealidentities": 0, + "attemptreopenmethod": "none", + "maxattempts": -1, + "markingworkflow": 0, + "markingallocation": 0, + "requiresubmissionstatement": 0, + "configs": [ + { + "id": 78, + "assignment": 12, + "plugin": "onlinetext", + "subtype": "assignsubmission", + "name": "enabled", + "value": "1" + }, + { + "id": 79, + "assignment": 12, + "plugin": "file", + "subtype": "assignsubmission", + "name": "enabled", + "value": "0" + }, + { + "id": 80, + "assignment": 12, + "plugin": "comments", + "subtype": "assignsubmission", + "name": "enabled", + "value": "1" + }, + { + "id": 81, + "assignment": 12, + "plugin": "comments", + "subtype": "assignfeedback", + "name": "enabled", + "value": "1" + }, + { + "id": 82, + "assignment": 12, + "plugin": "offline", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + }, + { + "id": 83, + "assignment": 12, + "plugin": "file", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + }, + { + "id": 90, + "assignment": 12, + "plugin": "onlinetext", + "subtype": "assignsubmission", + "name": "wordlimit", + "value": "0" + }, + { + "id": 91, + "assignment": 12, + "plugin": "onlinetext", + "subtype": "assignsubmission", + "name": "wordlimitenabled", + "value": "0" + }, + { + "id": 92, + "assignment": 12, + "plugin": "comments", + "subtype": "assignfeedback", + "name": "commentinline", + "value": "0" + }, + { + "id": 93, + "assignment": 12, + "plugin": "editpdf", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + } + ] + }, + { + "id": 13, + "cmid": 83, + "course": 4, + "name": "Average lecture", + "nosubmissions": 0, + "submissiondrafts": 0, + "sendnotifications": 1, + "sendlatenotifications": 1, + "sendstudentnotifications": 1, + "duedate": 1405626900, + "allowsubmissionsfromdate": 1405022100, + "grade": 100, + "timemodified": 1405022351, + "completionsubmit": 0, + "cutoffdate": 1405626900, + "teamsubmission": 0, + "requireallteammemberssubmit": 0, + "teamsubmissiongroupingid": 0, + "blindmarking": 0, + "revealidentities": 0, + "attemptreopenmethod": "none", + "maxattempts": -1, + "markingworkflow": 0, + "markingallocation": 0, + "requiresubmissionstatement": 0, + "configs": [ + { + "id": 84, + "assignment": 13, + "plugin": "onlinetext", + "subtype": "assignsubmission", + "name": "enabled", + "value": "1" + }, + { + "id": 85, + "assignment": 13, + "plugin": "file", + "subtype": "assignsubmission", + "name": "enabled", + "value": "0" + }, + { + "id": 86, + "assignment": 13, + "plugin": "comments", + "subtype": "assignsubmission", + "name": "enabled", + "value": "1" + }, + { + "id": 87, + "assignment": 13, + "plugin": "comments", + "subtype": "assignfeedback", + "name": "enabled", + "value": "1" + }, + { + "id": 88, + "assignment": 13, + "plugin": "offline", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + }, + { + "id": 89, + "assignment": 13, + "plugin": "file", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + } + ], + "intro": "

lecture description here

", + "introformat": 1 + }, + { + "id": 14, + "cmid": 18, + "course": 4, + "name": "Assignment: Requirements for night in the Alps", + "nosubmissions": 0, + "submissiondrafts": 1, + "sendnotifications": 0, + "sendlatenotifications": 0, + "sendstudentnotifications": 1, + "duedate": 1427410800, + "allowsubmissionsfromdate": 1426806000, + "grade": 100, + "timemodified": 1426865651, + "completionsubmit": 0, + "cutoffdate": 0, + "teamsubmission": 0, + "requireallteammemberssubmit": 0, + "teamsubmissiongroupingid": 0, + "blindmarking": 0, + "revealidentities": 0, + "attemptreopenmethod": "none", + "maxattempts": -1, + "markingworkflow": 0, + "markingallocation": 0, + "requiresubmissionstatement": 0, + "configs": [ + { + "id": 94, + "assignment": 14, + "plugin": "onlinetext", + "subtype": "assignsubmission", + "name": "enabled", + "value": "1" + }, + { + "id": 95, + "assignment": 14, + "plugin": "onlinetext", + "subtype": "assignsubmission", + "name": "wordlimit", + "value": "0" + }, + { + "id": 96, + "assignment": 14, + "plugin": "onlinetext", + "subtype": "assignsubmission", + "name": "wordlimitenabled", + "value": "0" + }, + { + "id": 97, + "assignment": 14, + "plugin": "file", + "subtype": "assignsubmission", + "name": "enabled", + "value": "0" + }, + { + "id": 98, + "assignment": 14, + "plugin": "comments", + "subtype": "assignsubmission", + "name": "enabled", + "value": "1" + }, + { + "id": 99, + "assignment": 14, + "plugin": "comments", + "subtype": "assignfeedback", + "name": "enabled", + "value": "1" + }, + { + "id": 100, + "assignment": 14, + "plugin": "comments", + "subtype": "assignfeedback", + "name": "commentinline", + "value": "1" + }, + { + "id": 101, + "assignment": 14, + "plugin": "editpdf", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + }, + { + "id": 102, + "assignment": 14, + "plugin": "offline", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + }, + { + "id": 103, + "assignment": 14, + "plugin": "file", + "subtype": "assignfeedback", + "name": "enabled", + "value": "0" + } + ], + "intro": "

Assignment description here

", + "introformat": 1, + "introattachments": [ + { + "filename": "singlescobasic.zip", + "mimetype": "application/zip", + "fileurl": "http://localhost/m/stable_master/webservice/pluginfile.php/245/mod_assign/introattachment/0/singlescobasic.zip" + }, + { + "filename": "page.html", + "mimetype": "text/html", + "fileurl": "http://localhost/m/stable_master/webservice/pluginfile.php/245/mod_assign/introattachment/0/page.html" + } + ] + } + ] + } + ], + "warnings": [] +} \ No newline at end of file diff --git a/emulator/mod_assign_get_submissions.json b/emulator/mod_assign_get_submissions.json new file mode 100644 index 000000000..9aee9d5ae --- /dev/null +++ b/emulator/mod_assign_get_submissions.json @@ -0,0 +1,114 @@ +{ + "assignments": [ + { + "assignmentid": 14, + "submissions": [ + { + "id": 7, + "userid": 3, + "attemptnumber": 0, + "timecreated": 1426865031, + "timemodified": 1426865062, + "status": "submitted", + "groupid": 0, + "plugins": [ + { + "type": "onlinetext", + "name": "Online text", + "fileareas": [ + { + "area": "submissions_onlinetext" + } + ], + "editorfields": [ + { + "name": "onlinetext", + "description": "Submission comments", + "text": "

But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful. 

", + "format": 1 + } + ] + }, + { + "type": "file", + "name": "File submissions", + "fileareas": [ + { + "area": "submission_files", + "files": [ + { + "filepath": "APDFfile.pdf", + "fileurl": "http://localhost/m/stable_master/webservice/pluginfile.php/247/assignsubmission_file/submission_files/12/somefile.pdf" + }, + { + "filepath": "anotherfile.docx", + "fileurl": "http://localhost/m/stable_master/webservice/pluginfile.php/247/assignsubmission_file/submission_files/12/somefile.pdf" + } + ] + } + ] + }, + { + "type": "comments", + "name": "Submission comments" + } + ] + }, + { + "id": 5, + "userid": 4, + "attemptnumber": 0, + "timecreated": 1426864693, + "timemodified": 1426864740, + "status": "draft", + "groupid": 0, + "plugins": [ + { + "type": "onlinetext", + "name": "Online text", + "fileareas": [ + { + "area": "submissions_onlinetext", + "files": [ + { + "filepath": "/Arte esquemático-Cigüeña.png", + "fileurl": "http://localhost/m/stable_master/webservice/pluginfile.php/245/assignsubmission_onlinetext/submissions_onlinetext/5/Arte%20esquem%C3%A1tico-Cig%C3%BCe%C3%B1a.png" + } + ] + } + ], + "editorfields": [ + { + "name": "onlinetext", + "description": "Submission comments", + "text": "

Blah Blah Blah lorem ipsum


Blah Blah Blah lorem ipsum


Blah Blah Blah lorem ipsum


\"\"

", + "format": 1 + } + ] + }, + { + "type": "file", + "name": "File submissions", + "fileareas": [ + { + "area": "submission_files", + "files": [ + { + "filepath": "somefile.pdf", + "fileurl": "http://localhost/m/stable_master/webservice/pluginfile.php/247/assignsubmission_file/submission_files/12/somefile.pdf" + } + ] + } + ] + }, + { + "type": "comments", + "name": "Submission comments" + } + ] + } + ] + } + ], + "warnings": [] +} \ No newline at end of file diff --git a/emulator/moodle_enrol_get_users_courses.json b/emulator/moodle_enrol_get_users_courses.json index 73bab14b1..a3968dbce 100644 --- a/emulator/moodle_enrol_get_users_courses.json +++ b/emulator/moodle_enrol_get_users_courses.json @@ -1 +1,18 @@ -[{"id":3,"shortname":"TestGrades","fullname":"Test course for grades","enrolledusercount":2,"idnumber":"","visible":1},{"id":2,"shortname":"Moodle Mountain","fullname":"Basic Moodle and Mountaineering","enrolledusercount":2,"idnumber":"","visible":1}] \ No newline at end of file +[ + { + "id": 3, + "shortname": "TestGrades", + "fullname": "Test course for grades", + "enrolledusercount": 2, + "idnumber": "", + "visible": 1 + }, + { + "id": 2, + "shortname": "Moodle Mountain", + "fullname": "Basic Moodle and Mountaineering", + "enrolledusercount": 2, + "idnumber": "", + "visible": 1 + } +] \ No newline at end of file diff --git a/emulator/moodle_user_get_course_participants_by_id.json b/emulator/moodle_user_get_course_participants_by_id.json index f2cedafb8..20c807c25 100644 --- a/emulator/moodle_user_get_course_participants_by_id.json +++ b/emulator/moodle_user_get_course_participants_by_id.json @@ -1 +1,129 @@ -[{"id":3,"username":"student","fullname":"Andrew Student","email":"andre@dasdfa.zcvjd","department":"","firstaccess":1402891717,"lastaccess":1404990136,"description":"","descriptionformat":1,"city":"Perth","country":"AU","profileimageurlsmall":"emulator/userimage.png#","profileimageurl":"emulator/userimage.png#","preferences":[{"name":"auth_forcepasswordchange","value":"0"},{"name":"email_bounce_count","value":"1"},{"name":"email_send_count","value":"2"},{"name":"message_provider_mod_assign_assign_notification_loggedin","value":"email"},{"name":"message_provider_mod_assign_assign_notification_loggedoff","value":"email"},{"name":"message_provider_moodle_courserequestapproved_loggedin","value":"email,airnotifier"},{"name":"message_provider_moodle_courserequestapproved_loggedoff","value":"email,airnotifier"},{"name":"message_provider_moodle_courserequestrejected_loggedin","value":"email,airnotifier"},{"name":"message_provider_moodle_courserequestrejected_loggedoff","value":"email,airnotifier"},{"name":"message_provider_enrol_manual_expiry_notification_loggedin","value":"email"},{"name":"message_provider_enrol_manual_expiry_notification_loggedoff","value":"email"},{"name":"message_provider_enrol_self_expiry_notification_loggedin","value":"email"},{"name":"message_provider_enrol_self_expiry_notification_loggedoff","value":"email"},{"name":"message_provider_mod_lesson_graded_essay_loggedin","value":"email"},{"name":"message_provider_mod_lesson_graded_essay_loggedoff","value":"email"},{"name":"message_provider_moodle_instantmessage_loggedin","value":"popup,airnotifier"},{"name":"message_provider_moodle_instantmessage_loggedoff","value":"popup,email,airnotifier"},{"name":"message_provider_mod_forum_posts_loggedin","value":"email"},{"name":"message_provider_mod_forum_posts_loggedoff","value":"email"},{"name":"message_blocknoncontacts","value":"0"},{"name":"message_beepnewmessage","value":"0"},{"name":"_lastloaded","value":1404990183}],"roles":[{"roleid":5,"name":"","shortname":"student","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Test course for grades","shortname":"TestGrades"},{"id":2,"fullname":"Basic Moodle and Mountaineering","shortname":"Moodle Mountain"}]}] \ No newline at end of file +[ + { + "id": 3, + "username": "student", + "fullname": "Andrew Student", + "email": "andre@dasdfa.zcvjd", + "department": "", + "firstaccess": 1402891717, + "lastaccess": 1404990136, + "description": "", + "descriptionformat": 1, + "city": "Perth", + "country": "AU", + "phone1": "+1 987 654 321", + "address": "Sesamee street", + "profileimageurlsmall": "emulator/userimage.png#", + "profileimageurl": "emulator/userimage.png#", + "preferences": [ + { + "name": "auth_forcepasswordchange", + "value": "0" + }, + { + "name": "email_bounce_count", + "value": "1" + }, + { + "name": "email_send_count", + "value": "2" + }, + { + "name": "message_provider_mod_assign_assign_notification_loggedin", + "value": "email" + }, + { + "name": "message_provider_mod_assign_assign_notification_loggedoff", + "value": "email" + }, + { + "name": "message_provider_moodle_courserequestapproved_loggedin", + "value": "email,airnotifier" + }, + { + "name": "message_provider_moodle_courserequestapproved_loggedoff", + "value": "email,airnotifier" + }, + { + "name": "message_provider_moodle_courserequestrejected_loggedin", + "value": "email,airnotifier" + }, + { + "name": "message_provider_moodle_courserequestrejected_loggedoff", + "value": "email,airnotifier" + }, + { + "name": "message_provider_enrol_manual_expiry_notification_loggedin", + "value": "email" + }, + { + "name": "message_provider_enrol_manual_expiry_notification_loggedoff", + "value": "email" + }, + { + "name": "message_provider_enrol_self_expiry_notification_loggedin", + "value": "email" + }, + { + "name": "message_provider_enrol_self_expiry_notification_loggedoff", + "value": "email" + }, + { + "name": "message_provider_mod_lesson_graded_essay_loggedin", + "value": "email" + }, + { + "name": "message_provider_mod_lesson_graded_essay_loggedoff", + "value": "email" + }, + { + "name": "message_provider_moodle_instantmessage_loggedin", + "value": "popup,airnotifier" + }, + { + "name": "message_provider_moodle_instantmessage_loggedoff", + "value": "popup,email,airnotifier" + }, + { + "name": "message_provider_mod_forum_posts_loggedin", + "value": "email" + }, + { + "name": "message_provider_mod_forum_posts_loggedoff", + "value": "email" + }, + { + "name": "message_blocknoncontacts", + "value": "0" + }, + { + "name": "message_beepnewmessage", + "value": "0" + }, + { + "name": "_lastloaded", + "value": 1404990183 + } + ], + "roles": [ + { + "roleid": 5, + "name": "", + "shortname": "student", + "sortorder": 0 + } + ], + "enrolledcourses": [ + { + "id": 3, + "fullname": "Test course for grades", + "shortname": "TestGrades" + }, + { + "id": 2, + "fullname": "Basic Moodle and Mountaineering", + "shortname": "Moodle Mountain" + } + ] + } +] \ No newline at end of file diff --git a/emulator/moodle_user_get_users_by_courseid.json b/emulator/moodle_user_get_users_by_courseid.json index 07d087560..b2e6cddbd 100644 --- a/emulator/moodle_user_get_users_by_courseid.json +++ b/emulator/moodle_user_get_users_by_courseid.json @@ -1 +1,160 @@ -[{"id":3,"username":"student","fullname":"Andrew Student","email":"andre@dasdfa.zcvjd","department":"","firstaccess":1402891717,"lastaccess":1404990136,"description":"","descriptionformat":1,"city":"Perth","country":"AU","profileimageurlsmall":"emulator/userimage.png#","profileimageurl":"emulator/userimage.png#","roles":[{"roleid":5,"name":"","shortname":"student","sortorder":0}],"preferences":[{"name":"auth_forcepasswordchange","value":"0"},{"name":"email_bounce_count","value":"1"},{"name":"email_send_count","value":"2"},{"name":"message_provider_mod_assign_assign_notification_loggedin","value":"email"},{"name":"message_provider_mod_assign_assign_notification_loggedoff","value":"email"},{"name":"message_provider_moodle_courserequestapproved_loggedin","value":"email,airnotifier"},{"name":"message_provider_moodle_courserequestapproved_loggedoff","value":"email,airnotifier"},{"name":"message_provider_moodle_courserequestrejected_loggedin","value":"email,airnotifier"},{"name":"message_provider_moodle_courserequestrejected_loggedoff","value":"email,airnotifier"},{"name":"message_provider_enrol_manual_expiry_notification_loggedin","value":"email"},{"name":"message_provider_enrol_manual_expiry_notification_loggedoff","value":"email"},{"name":"message_provider_enrol_self_expiry_notification_loggedin","value":"email"},{"name":"message_provider_enrol_self_expiry_notification_loggedoff","value":"email"},{"name":"message_provider_mod_lesson_graded_essay_loggedin","value":"email"},{"name":"message_provider_mod_lesson_graded_essay_loggedoff","value":"email"},{"name":"message_provider_moodle_instantmessage_loggedin","value":"popup,airnotifier"},{"name":"message_provider_moodle_instantmessage_loggedoff","value":"popup,email,airnotifier"},{"name":"message_provider_mod_forum_posts_loggedin","value":"email"},{"name":"message_provider_mod_forum_posts_loggedoff","value":"email"},{"name":"message_blocknoncontacts","value":"0"},{"name":"message_beepnewmessage","value":"0"},{"name":"_lastloaded","value":1404990136}],"enrolledcourses":[{"id":3,"fullname":"Test course for grades","shortname":"TestGrades"},{"id":2,"fullname":"Basic Moodle and Mountaineering","shortname":"Moodle Mountain"}]},{"id":4,"fullname":"Tom Student","email":"tom@nomailever.zzzz","firstaccess":0,"lastaccess":0,"description":"","descriptionformat":1,"city":"barcelona","country":"ES","profileimageurlsmall":"emulator/userimage.png#","profileimageurl":"emulator/userimage.png#","roles":[{"roleid":5,"name":"","shortname":"student","sortorder":0}],"enrolledcourses":[{"id":3,"fullname":"Test course for grades","shortname":"TestGrades"},{"id":2,"fullname":"Basic Moodle and Mountaineering","shortname":"Moodle Mountain"}]}] \ No newline at end of file +[ + { + "id": 3, + "username": "student", + "fullname": "Andrew Student", + "email": "andre@dasdfa.zcvjd", + "department": "", + "firstaccess": 1402891717, + "lastaccess": 1404990136, + "description": "", + "descriptionformat": 1, + "city": "Perth", + "country": "AU", + "profileimageurlsmall": "emulator/userimage.png#", + "profileimageurl": "emulator/userimage.png#", + "roles": [ + { + "roleid": 5, + "name": "", + "shortname": "student", + "sortorder": 0 + } + ], + "preferences": [ + { + "name": "auth_forcepasswordchange", + "value": "0" + }, + { + "name": "email_bounce_count", + "value": "1" + }, + { + "name": "email_send_count", + "value": "2" + }, + { + "name": "message_provider_mod_assign_assign_notification_loggedin", + "value": "email" + }, + { + "name": "message_provider_mod_assign_assign_notification_loggedoff", + "value": "email" + }, + { + "name": "message_provider_moodle_courserequestapproved_loggedin", + "value": "email,airnotifier" + }, + { + "name": "message_provider_moodle_courserequestapproved_loggedoff", + "value": "email,airnotifier" + }, + { + "name": "message_provider_moodle_courserequestrejected_loggedin", + "value": "email,airnotifier" + }, + { + "name": "message_provider_moodle_courserequestrejected_loggedoff", + "value": "email,airnotifier" + }, + { + "name": "message_provider_enrol_manual_expiry_notification_loggedin", + "value": "email" + }, + { + "name": "message_provider_enrol_manual_expiry_notification_loggedoff", + "value": "email" + }, + { + "name": "message_provider_enrol_self_expiry_notification_loggedin", + "value": "email" + }, + { + "name": "message_provider_enrol_self_expiry_notification_loggedoff", + "value": "email" + }, + { + "name": "message_provider_mod_lesson_graded_essay_loggedin", + "value": "email" + }, + { + "name": "message_provider_mod_lesson_graded_essay_loggedoff", + "value": "email" + }, + { + "name": "message_provider_moodle_instantmessage_loggedin", + "value": "popup,airnotifier" + }, + { + "name": "message_provider_moodle_instantmessage_loggedoff", + "value": "popup,email,airnotifier" + }, + { + "name": "message_provider_mod_forum_posts_loggedin", + "value": "email" + }, + { + "name": "message_provider_mod_forum_posts_loggedoff", + "value": "email" + }, + { + "name": "message_blocknoncontacts", + "value": "0" + }, + { + "name": "message_beepnewmessage", + "value": "0" + }, + { + "name": "_lastloaded", + "value": 1404990136 + } + ], + "enrolledcourses": [ + { + "id": 3, + "fullname": "Test course for grades", + "shortname": "TestGrades" + }, + { + "id": 2, + "fullname": "Basic Moodle and Mountaineering", + "shortname": "Moodle Mountain" + } + ] + }, + { + "id": 4, + "fullname": "Tom Student", + "email": "tom@nomailever.zzzz", + "firstaccess": 0, + "lastaccess": 0, + "description": "", + "descriptionformat": 1, + "city": "barcelona", + "country": "ES", + "profileimageurlsmall": "emulator/userimage.png#", + "profileimageurl": "emulator/userimage.png#", + "roles": [ + { + "roleid": 5, + "name": "", + "shortname": "student", + "sortorder": 0 + } + ], + "enrolledcourses": [ + { + "id": 3, + "fullname": "Test course for grades", + "shortname": "TestGrades" + }, + { + "id": 2, + "fullname": "Basic Moodle and Mountaineering", + "shortname": "Moodle Mountain" + } + ] + } +] \ No newline at end of file diff --git a/emulator/moodle_webservice_get_siteinfo.json b/emulator/moodle_webservice_get_siteinfo.json index 8aeeaace8..14e0e6670 100644 --- a/emulator/moodle_webservice_get_siteinfo.json +++ b/emulator/moodle_webservice_get_siteinfo.json @@ -84,6 +84,38 @@ { "name": "local_mobile_gradereport_user_get_grades_table", "version": "2014052807" + }, + { + "name": "local_mobile_core_message_create_contacts", + "version": "2014052811" + }, + { + "name": "local_mobile_core_message_delete_contacts", + "version": "2014052811" + }, + { + "name": "local_mobile_core_message_block_contacts", + "version": "2014052811" + }, + { + "name": "local_mobile_core_message_unblock_contacts", + "version": "2014052811" + }, + { + "name": "local_mobile_core_message_get_contacts", + "version": "2014052811" + }, + { + "name": "local_mobile_core_message_search_contacts", + "version": "2014052811" + }, + { + "name": "mod_assign_get_assignments", + "version": "2014052811" + }, + { + "name": "mod_assign_get_submissions", + "version": "2014052811" } ], "downloadfiles": 1, diff --git a/icon.png b/icon.png index 6613ad610..29040a160 100644 Binary files a/icon.png and b/icon.png differ diff --git a/img/error.png b/img/error.png new file mode 100644 index 000000000..0f5cfe074 Binary files /dev/null and b/img/error.png differ diff --git a/img/ico-contacts.png b/img/ico-contacts.png new file mode 100644 index 000000000..38d616cf1 Binary files /dev/null and b/img/ico-contacts.png differ diff --git a/img/icon/android/icon-144-xxhdpi.png b/img/icon/android/icon-144-xxhdpi.png new file mode 100644 index 000000000..23400267c Binary files /dev/null and b/img/icon/android/icon-144-xxhdpi.png differ diff --git a/img/icon/android/icon-36-ldpi.png b/img/icon/android/icon-36-ldpi.png index b1d8fdf56..e17c85abb 100644 Binary files a/img/icon/android/icon-36-ldpi.png and b/img/icon/android/icon-36-ldpi.png differ diff --git a/img/icon/android/icon-48-mdpi.png b/img/icon/android/icon-48-mdpi.png index 6d9bcf196..cca243f58 100644 Binary files a/img/icon/android/icon-48-mdpi.png and b/img/icon/android/icon-48-mdpi.png differ diff --git a/img/icon/android/icon-72-hdpi.png b/img/icon/android/icon-72-hdpi.png index fe29ca13f..80df61dff 100644 Binary files a/img/icon/android/icon-72-hdpi.png and b/img/icon/android/icon-72-hdpi.png differ diff --git a/img/icon/android/icon-96-xhdpi.png b/img/icon/android/icon-96-xhdpi.png index 2d85cebc8..2e36b0827 100644 Binary files a/img/icon/android/icon-96-xhdpi.png and b/img/icon/android/icon-96-xhdpi.png differ diff --git a/img/icon/ios/iTunesArtwork.png b/img/icon/ios/iTunesArtwork.png new file mode 100644 index 000000000..b98d8a19f Binary files /dev/null and b/img/icon/ios/iTunesArtwork.png differ diff --git a/img/icon/ios/iTunesArtwork@2x.png b/img/icon/ios/iTunesArtwork@2x.png new file mode 100644 index 000000000..67dc8820d Binary files /dev/null and b/img/icon/ios/iTunesArtwork@2x.png differ diff --git a/img/icon/ios/icon-40.png b/img/icon/ios/icon-40.png new file mode 100644 index 000000000..8e4eec0d2 Binary files /dev/null and b/img/icon/ios/icon-40.png differ diff --git a/img/icon/ios/icon-40@2x.png b/img/icon/ios/icon-40@2x.png new file mode 100644 index 000000000..edde17902 Binary files /dev/null and b/img/icon/ios/icon-40@2x.png differ diff --git a/img/icon/ios/icon-120.png b/img/icon/ios/icon-40@3x.png similarity index 100% rename from img/icon/ios/icon-120.png rename to img/icon/ios/icon-40@3x.png diff --git a/img/icon/ios/icon-57-2x.png b/img/icon/ios/icon-57@2x.png similarity index 100% rename from img/icon/ios/icon-57-2x.png rename to img/icon/ios/icon-57@2x.png diff --git a/img/icon/ios/icon-60.png b/img/icon/ios/icon-60.png new file mode 100644 index 000000000..3931e25ab Binary files /dev/null and b/img/icon/ios/icon-60.png differ diff --git a/img/icon/ios/icon-60@2x.png b/img/icon/ios/icon-60@2x.png new file mode 100644 index 000000000..19a5940a8 Binary files /dev/null and b/img/icon/ios/icon-60@2x.png differ diff --git a/img/icon/ios/icon-60@3x.png b/img/icon/ios/icon-60@3x.png new file mode 100644 index 000000000..61e70d976 Binary files /dev/null and b/img/icon/ios/icon-60@3x.png differ diff --git a/img/icon/ios/icon-72-2x.png b/img/icon/ios/icon-72@2x.png similarity index 100% rename from img/icon/ios/icon-72-2x.png rename to img/icon/ios/icon-72@2x.png diff --git a/img/icon/ios/icon-152.png b/img/icon/ios/icon-76@2x.png similarity index 100% rename from img/icon/ios/icon-152.png rename to img/icon/ios/icon-76@2x.png diff --git a/img/icon/ios/icon-small.png b/img/icon/ios/icon-small.png new file mode 100644 index 000000000..491521396 Binary files /dev/null and b/img/icon/ios/icon-small.png differ diff --git a/img/icon/ios/icon-small@2x.png b/img/icon/ios/icon-small@2x.png new file mode 100644 index 000000000..fc89d2ebc Binary files /dev/null and b/img/icon/ios/icon-small@2x.png differ diff --git a/img/icon/ios/icon-small@3x.png b/img/icon/ios/icon-small@3x.png new file mode 100644 index 000000000..de8d0016d Binary files /dev/null and b/img/icon/ios/icon-small@3x.png differ diff --git a/img/received.png b/img/received.png new file mode 100644 index 000000000..11ef29bc3 Binary files /dev/null and b/img/received.png differ diff --git a/img/sent.png b/img/sent.png new file mode 100644 index 000000000..d94891b7f Binary files /dev/null and b/img/sent.png differ diff --git a/img/splash/android/android_hdpi_portrait.png b/img/splash/android/android_hdpi_portrait.png index a3ace704c..5104837c6 100755 Binary files a/img/splash/android/android_hdpi_portrait.png and b/img/splash/android/android_hdpi_portrait.png differ diff --git a/img/splash/android/android_ldpi_portrait.png b/img/splash/android/android_ldpi_portrait.png index f2ff8d858..89df08ccb 100755 Binary files a/img/splash/android/android_ldpi_portrait.png and b/img/splash/android/android_ldpi_portrait.png differ diff --git a/img/splash/android/android_mdpi_portrait.png b/img/splash/android/android_mdpi_portrait.png index 7b931c800..39312a542 100755 Binary files a/img/splash/android/android_mdpi_portrait.png and b/img/splash/android/android_mdpi_portrait.png differ diff --git a/img/splash/android/android_xhdpi_portrait.png b/img/splash/android/android_xhdpi_portrait.png index f2335b18d..a5bbdc349 100755 Binary files a/img/splash/android/android_xhdpi_portrait.png and b/img/splash/android/android_xhdpi_portrait.png differ diff --git a/index.html b/index.html index b2d8ff83a..02762cb2d 100644 --- a/index.html +++ b/index.html @@ -16,7 +16,7 @@ if (typeof(msg) === "string") { var error = msg + "\n\nFile: " + url + "\nLine: " + lineNumber; // Ommit cordova and 3rd party libs errors. - if (url.indexOf("cordova.js") == -1 && url.indexOf("externallib") == -1 && + if (url.indexOf("cordova") == -1 && url.indexOf("externallib") == -1 && url.indexOf("org.apache.cordova") == -1) { window.alert(error); } @@ -89,6 +89,20 @@ } }, 5000); MM.fs.init(); + + // Check calendar events for new notifications. + if (MM.plugins.events && MM.plugins.events.isPluginVisible()) { + MM.plugins.events.checkLocalNotifications(); + } + + // App resume event. + $(document).bind('resume', function() { + + // Check calendar events for new notifications. + if (MM.plugins.events && MM.plugins.events.isPluginVisible()) { + MM.plugins.events.checkLocalNotifications(); + } + }); }); // This function is for handling when the app is opened using a custom URL SCHEME. @@ -121,9 +135,11 @@ - +

+
+
@@ -131,6 +147,7 @@
+
@@ -366,5 +383,27 @@

+ + diff --git a/lang/ar.json b/lang/ar.json index aa4563b62..f7c11ff6c 100644 --- a/lang/ar.json +++ b/lang/ar.json @@ -8,6 +8,7 @@ "addnote": "أضف ملاحظة", "address": "العنوان", "addsite": "أضف موقع", + "addsubmission": "أضف تسليم", "allcachespurged": "تحديث جميع المخابئ", "areyousurereset": "هل أنت متأكد من أنك تريد إعادة تعيين التطبيق؟ سيتم حذف جميع المواقع الخاصة بك.", "audionotavailable": "أجهزة إدخال الصوت غير متوفرة", @@ -16,6 +17,8 @@ "author": "الكاتب", "average": "متوسط", "back": "للخلف", + "blockcontact": "أحجب عنوان الأتصال", + "blockedusers": "المستخدمين المحجوبين ({$a})", "browsephotoalbums": "ألبومات الصور", "cacheexpirationtime": "وقت انتهاء صلاحية ذاكرة التخزين المؤقت (بالميلي ثانية)", "cancel": "إلغاء", @@ -23,12 +26,14 @@ "cannotconnect": "لا يمكن الاتصال: تحقق من أنك كتبت عنوان URL بشكل صحيح وأنك تستخدم موقع موودل 2.4 أو أحدث.", "cannotconnectssl": "لا يمكن الاتصال: تحقق من أنك كتبت عنوان URL بشكل صحيح، و أن موقعك يستخدم موودل 2.4 أو أحدث و أن شهادة SSL صالحة.", "cannotsendmessage": "لا يمكن الوصول للشبكة. تم حفظ رسالتك في قائمة انتظار المهام؛ يمكنك إعادة إرسالها مرة أخرى عندما تصبح متصلأ بالإنترنت.", + "choosefile": "اختر ملف", "city": "المدنية", "close": "اغلق", "completed": "اكتمل", "confirmcontinuedownload": "هل أنت متأكد أنك تريد الاستمرار في تحميل الملف؟", "contact": "جهة اتصال", "contactadd": "تم إضافة جهة الإتصال إلى قائمة جهات الاتصال بالهاتف", + "contacts": "عناوين اتصال", "content": "المحتوى", "contents": "المحتويات", "contentyetnotavailable": "هذا النوع من النشاط لم يتبلور بعد عبر تطبيق المحمول", @@ -46,12 +51,15 @@ "details": "التفاصيل", "development": "التطوير", "deviceinfo": "معلومات الجهاز", + "disabled": "المحادثات غير مفعّلة على هذا الموقع", "disablenotifications": "تعطيل الإشعارات", "disablerdebugger": "تعطيل تصحيح الأخطاء عن بعد", "discussions": "مناقشات", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "تحميل الملف البعيد", "downloadtime": "التحميل", + "duedate": "تاريخ تقديم مهمة", + "duedateno": "لا يوجد موعد لتقديم المهمة", "email": "البريد الإلكتروني", "empty": "فارغ", "enableautosync": "تمكين المزامنة التلقائية", @@ -70,11 +78,13 @@ "errorcapturingaudio": "خطأ في التقاط الصوت", "errorcapturingvideo": "خطأ في التقاط الفيديو", "errorduringdevicetokenrequesttoapns": "خطأ أثناء طلب الجهاز رمزية ASPN", + "errorreadingfile": "خطاء في قراءة ملف \"{$a}\"", "errorregisteringdeviceinmoodle": "خطأ في تسجيل الجهاز في موودل", "erroruploading": "خطأ في رفع الملف", "estimatedfreespace": "تقدير المساحة الحرة", "events": "تقويم الأحداث", "feedback": "إفادة", + "file": "ملف", "filename": "اسم الملف", "filesize": "الحجم", "fileuploaded": "الملف الذي تم رفعه", @@ -123,6 +133,7 @@ "networkerrormsg": "لم يتم تمكين الشبكة أو أنها لا تعمل.", "next": "استمر", "no": "لا", + "nomessagesfound": "لم يتم العثور على إي رسالة", "notaskstobesynchronized": "لا مهام للمزامنة", "noteadded": "أضيفت الملاحظة", "noticelargefile": "يرجى ملاحظة أن الملف الذي تطلب تحميله كبير، و ربما يستغرق بعض الوقت لإكماله.", @@ -131,8 +142,11 @@ "notificationsdisabled": "تم تعطيل الإشعارات", "notificationsenabled": "تمكين إشعارات كافة مواقع موودل الخاصة", "notificationshowtoenable": "", + "nousersfound": "لا يوجد مستخدمون", + "offlinecontacts": "الغير موجودون ({$a})", "offlinemode": "وضع دون اتصال", "ok": "حسنا", + "onlinecontacts": "الموجودون ({$a})", "participants": "المشاركين", "password": "كلمة المرور", "passwordlabel": "كلمة المرور", @@ -151,6 +165,7 @@ "recordaudio": "صوتي", "recordstored": "قد تم تخزينها التسجيل الخاص بكفي المساحة الخاصة بك", "remotesystemnotconfiguredfornotifications": "لم يتم تكوين تثبيت موودل لإرسال إشعارات الجوال. الرجاء الاتصال بمسؤول موودل الخاص بك إذا كنت تعتقد أنه يجب تمكين الإشعارات.", + "removecontact": "ازل عنوان الاتصال", "replay": "الرد", "reply": "رد", "reportabug": "الإبلاغ عن خطأ", @@ -180,6 +195,7 @@ "spaceusage": "المساحة المستخدمة", "stop": "قف", "strings": "الجمل", + "submissions": "تسليمات", "synchronization": "تزامن", "system": "نظام", "takephoto": "التقط صورة", @@ -194,10 +210,12 @@ "total": "المجموع", "totalusage": "إجمالي الاستخدام", "type": "النوع", + "unblockcontact": "أزل الحجب عن عنوان الاتصال", "unexpectederror": "خطأ غير متوقع. الرجاء الإغلاق وإعادة فتح التطبيق للمحاولة مرة أخرى", "update": "تحديث", "updatesite": "تحديث الموقع", "upload": "تحميل", + "uploadfile": "تحميل ملف", "uploading": "تحميل", "uploadingtoprivatefiles": "جاري التحميل لمنطقة ملفاتك خاصة", "userfrom": "من", diff --git a/lang/bg.json b/lang/bg.json index a33a0c73d..3b983b157 100644 --- a/lang/bg.json +++ b/lang/bg.json @@ -8,8 +8,10 @@ "addnote": "Добавяне на бележка", "address": "Адрес", "addsite": "Добавяне на сайт", + "addsubmission": "Добавяне на работа за предаване", "allcachesinvalidated": "Всички кешове - недействителни", "allcachespurged": "Всички кешове са почистени", + "allowsubmissionsfromdate": "Позволено предаване от", "areyousurereset": "Сигурни ли сте, че искате да нулирате приложението? Всички Ваши сайтове ще бъдат изтрити.", "audionotavailable": "Звуковият вход на устройството не е достъпен.", "audiorecordinstructions": "Натиснете \"Запис\" за да започнете записване на звук и \"Стоп\", за да спрете и качите файла.", @@ -17,6 +19,8 @@ "author": "Автор", "average": "Средно", "back": "Назад", + "blockcontact": "Блокиране на контакт", + "blockedusers": "Блокирани потребители ({$a})", "browsephotoalbums": "Фото-албум", "cacheexpirationtime": "Продължителност на кеша (милисекунди)", "cancel": "Отказване", @@ -24,6 +28,7 @@ "cannotconnect": "Не става свързване: Проверете дали написахте правилно адреса и дали сайтът използва Moodle версия 2.4 или по-нова.", "cannotconnectssl": "Не става свързване: Проверете дали написахте правилно адреса, дали сайтът използва Moodle версия 2.4 или по-нова и SSL сертификатът е валиден.", "cannotsendmessage": "Мрежата не е достъпна. Вашето съобщение беше запазено в опашката на задачите и можете да го изпратите щом бъдете онлайн.", + "choosefile": "Избиране на файл", "city": "Град", "close": "Затваряне", "completed": "Завършено", @@ -31,6 +36,7 @@ "confirmdeletetask": "Сигурни ли сте, че искате да изтриете тази задача?", "contact": "Контакти", "contactadd": "Контактът е добавен в контактите на телефона", + "contacts": "Контакти", "content": "Съдържание", "contents": "Съдържание", "contentyetnotavailable": "Този вид дейност не е достъпен през мобилното приложение", @@ -40,6 +46,7 @@ "course": "Курс", "coursename": "Име на курса", "csssynced": "Отдалечените CSS са синхронизирани", + "cutoffdate": "Дата на отказ", "date": "Дата", "days": "Дни", "delete": "Изтриване", @@ -50,12 +57,15 @@ "details": "Подробности", "development": "Разработка", "deviceinfo": "Информация за устройството", + "disabled": "Системата за съобщения е забранена на този сайт", "disablenotifications": "Изключване на уведомленията", "disablerdebugger": "Изключване на отдалеченото диагностициране", "discussions": "обсъждания", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Изтегляне на отдалечен файл", "downloadtime": "Изтеглено", + "duedate": "Краен срок", + "duedateno": "Няма краен срок", "email": "Имейл", "empty": "празно", "enableautosync": "Включване на автоматична синхронизация", @@ -84,6 +94,7 @@ "estimatedfreespace": "Пресметнато свободно пространство", "events": "Събития от календара", "feedback": "Обратна връзка", + "file": "Файл", "filedownloaded": "Файлът е изтеглен", "filename": "Име на файл", "filesize": "Размер", @@ -140,6 +151,7 @@ "next": "Следващо", "no": "Не", "noevents": "Няма събития", + "nomessagesfound": "Не бяха открити съобщения", "norefreshdisconnected": "Опресняването изисква връзка с мрежата", "notaskstobesynchronized": "Няма задачи за синхронизиране", "noteadded": "Бележката е добавена", @@ -148,9 +160,13 @@ "notifications": "Уведомления", "notificationsdisabled": "Уведомленията са изключени", "notificationsenabled": "Уведомленията са включени за всички Ваши Moodle сайтове", + "nousersfound": "Не са намерени потребители", + "offlinecontacts": "Контакти офлайн ({$a})", "offlinemode": "Режим офлайн", "ok": "Добре", + "onlinecontacts": "Контакти онлайн ({$a})", "openinbrowser": "Отваряне в браузър", + "participant": "Участник", "participants": "Участници", "password": "Парола", "passwordlabel": "Парола", @@ -171,6 +187,7 @@ "recordaudio": "Аудио", "recordstored": "Вашият запис беше запазен в личните Ви файлове", "remotesystemnotconfiguredfornotifications": "Инсталацията на Moodle не е конфигурирана да изпраща мобилни съобщения. Моля, свържете се със Вашия Moodle администратор, ако мислите, че уведомленията трябва да са разрешени.", + "removecontact": "Премахване на контакт", "replay": "Отговор", "reply": "Отговаряне", "reportabug": "Съобщаване за нередност", @@ -202,6 +219,7 @@ "spaceusage": "Използване на пространство", "stop": "Стоп", "strings": "Стрингове", + "submissions": "Предадени работи", "synchronization": "Синхронизиране", "syncthistasknow": "Синхронизиране на тази задача сега", "system": "Система", @@ -218,10 +236,12 @@ "total": "Общо", "totalusage": "Общо използвано", "type": "Тип", + "unblockcontact": "Разблокиране на контакт", "unexpectederror": "Неочаквана грешка. Моля, затворете мобилното приложение и го отворете пак, за да опитате отново.", "update": "Актуализиране", "updatesite": "Актуализиране на сайта", "upload": "Качване", + "uploadfile": "Качване на файл", "uploading": "Качване", "uploadingtoprivatefiles": "Качване във вашата лична зона", "uselocalmobileplugin": "Страницата работи по-добре, когато на Moodle сайта е инсталирана мобилната добавка.", @@ -234,6 +254,7 @@ "videostored": "Вашето видео беше запазено във Вашата лична зона", "view": "Преглед", "viewableonthisapp": "Видимо в това приложение", + "viewsubmission": "Преглед на предадена работа", "warning": "Предупреждание", "webservicesnotenabled": "Интернет услугите на са активирани на Вашия сайт. Моля, свържете се с администратор на Moodle сайта, ако мислите, че мобилният достъп трябва да е позволен.", "webservicesuccessfullyexecuted": "Интернет услугите се изпълниха успешно", diff --git a/lang/ca.json b/lang/ca.json index 5e1f5b64a..ea3fea98c 100644 --- a/lang/ca.json +++ b/lang/ca.json @@ -8,8 +8,10 @@ "addnote": "Afegeix una nota", "address": "Adreça", "addsite": "Afegeix un lloc", + "addsubmission": "Afegeix tramesa", "allcachesinvalidated": "S'han desactivat totes les memòries cau", "allcachespurged": "S'han esborrat totes les memòries cau", + "allowsubmissionsfromdate": "Permet trameses des de", "areyousurereset": "Esteu segur que voleu reiniciar l'aplicació ? S'esborraran tots els vostres llocs.", "audionotavailable": "No està disponible el maquinari d'entrada d'àudio", "audiorecordinstructions": "Premeu 'Gravar' per iniciar la gravació. 'Atura' per aturar i penjar el fitxer.", @@ -17,6 +19,8 @@ "author": "Autor", "average": "Mitjana", "back": "Enrere", + "blockcontact": "Bloca contacte", + "blockedusers": "Usuaris bloquejats ({$a})", "browsephotoalbums": "Àlbums de fotos", "cacheexpirationtime": "Temps de venciment de memòria cau (milisegons)", "cancel": "Cancel·la", @@ -24,6 +28,7 @@ "cannotconnect": "No s'ha pogut connectar. Comproveu que l'URL és correcte i que el lloc Moodle utilitza la versió 2.4 o posterior.", "cannotconnectssl": "No s'ha pogut connectar. Comproveu que l'URL és correcte, que el lloc Moodle utilitza la versió 2.4 o posterior i que el certificat SSL és vàlid.", "cannotsendmessage": "No teniu connexió a la xarxa. El missatge s'ha desat a la cua de tasques. Quan estigueu en línia podreu reenviar-lo.", + "choosefile": "Tria un fitxer", "city": "Ciutat", "close": "Tanca", "completed": "Completat", @@ -31,6 +36,7 @@ "confirmdeletetask": "Esteu segur que voleu esborrar la tasca?", "contact": "Contacte", "contactadd": "S'ha afegit el contacte a la llibreta de contactes del vostre telèfon", + "contacts": "Contactes", "content": "Contingut", "contents": "Continguts", "contentyetnotavailable": "Aquest tipus d'activitat no està disponible encara en l'aplicació mòbil", @@ -39,6 +45,7 @@ "course": "Curs", "coursename": "Nom del curs", "csssynced": "S'ha sincronitzat el CSS remot", + "cutoffdate": "Data límit", "date": "Data", "days": "Dies", "delete": "Suprimeix", @@ -49,12 +56,16 @@ "details": "Detalls", "development": "Desenvolupament", "deviceinfo": "Informació del dispositiu", + "disabled": "La missatgeria està inhabilitada en aquest lloc", + "disablenotificationforevent": "Inhabilita la notificació d'aquest esdeveniment", "disablenotifications": "Inhabilita les notificacions", "disablerdebugger": "Inhabilita la depuració remota", "discussions": "Debats", "docsurl": "http:\/\/docs.moodle.org\/ca\/Mobile_app", "downloadremotefile": "Baixa fitxer remot", "downloadtime": "Baixat", + "duedate": "Data de venciment", + "duedateno": "Sense data de venciment", "email": "Correu electrònic", "empty": "buit", "enableautosync": "Habilita sincronització automàtica", @@ -63,10 +74,12 @@ "enableautosyncws": "Habilita sincronització d'operacions i dades", "enablecss3transitions": "Habilita transicions CSS3", "enabledebugging": "Habilita depuració", + "enableeventnotifications": "Habilita notificacions d'esdeveniments", "enablenotifications": "Habilita notificacions", "enablenotificationscheck": "

Abans hauríeu de comprovar si el lloc Moodle permet l'ús de notificacions mòbils. Obriu el vostre lloc Moodle i aneu a Administració \/ Configuració del perfil\/ Missatgeria. Si les notificacions mòbils estan habilitades veureu una columna anomenada Notificacions mòbils<\/p>", "enablenotificationswarning": "

Per a poder habilitar les notificacions, hem d'emmagatzemar en el lloc Moodle informació sobre el vostre dispositiu mòbil, com ara el model i el sistema operatiu.<\/p>", "enablerdebugger": "Habilita depuració remota", + "enablesyncwifi": "Permet la sincronització només quan hi hagi Wi-Fi", "error": "Error", "errorcamera": "S'ha produït un error en accedir a la càmera", "errorcameramsg": "La càmera no funciona amb aquest dispositiu", @@ -75,13 +88,16 @@ "errordownloading": "S'ha produït un error en baixar el fitxer", "errorduringdevicetokenrequest": "S'ha produït un error durant la petició del testimoni del dispositiu", "errorduringdevicetokenrequesttoapns": "S'ha produït un error durant la petició del testimoni a l'APNS", + "errorlistingfiles": "S'ha produït un error en recuperar fitxers d'aquest directori", "errornoconnectednocache": "El dispositiu no està connectat i no hi ha informació emmagatzemada per a l'opció sol·licitada", + "errorreadingfile": "S'ha produït un error en llegir el fitxer \"{$a}\"", "errorregisteringdeviceinmoodle": "S'ha produït un error en registrar el dispositiu en Moodle", "errorretrievinggradeinformation": "S'ha produït un error en recuperar la informació de qualificacions", "erroruploading": "S'ha produït un error en penjar el fitxer", "estimatedfreespace": "Espai lliure estimat", "events": "Esdeveniments del calendari", "feedback": "Retroacció", + "file": "Fitxer", "filedownloaded": "S'ha baixat el fitxer", "filename": "Nom de fitxer", "filesize": "Mida", @@ -90,15 +106,17 @@ "forcecsssync": "Sincronitza ara el CSS", "forcelangsync": "Sincronització ara els idiomes", "forceofflinemode": "Imposa mode fora de línia", + "forumnodiscussionsyet": "Encara no hi ha temes de debat en aquest fòrum", + "forumnumreplies": "Respostes", "fullname": "Nom complet", "general": "General", "grade": "Qualificació", "grades": "Qualificacions", "groupeventsnotdisplayed": "No es visualitzen els esdeveniments de grup", "help": "Ajuda", - "helpmelogin": "

Per a poder iniciar la sessió, comproveu que :<\/p>1. El lloc Moodle té la versió 2.4 o superior.
2. L'administrador del lloc Moodle ha habilitat l'accés mòbil.

Per a provar l'aplicació en un lloc de demostració, escriviu teacher<\/i> o student<\/i> en el camp Nom d'usuari\/ària<\/i> i feu clic en el botó Afegeix<\/b>.<\/p> Visiteu el lloc de documentació de Moodle per a informació i ajuda més detallada.<\/a> <\/p>", - "hours": "hores", - "icantlogin": "No puc iniciar la sessió.", + "helpmelogin": "

Hi ha milers de llocs Moodle al món. Aquesta aplicació, només funciona amb els llocs Moodle que tenen habilitat els serveis web per als dispositius mòbils. <\/p>

Si no podeu conecctar al vostre Moodle, contacteu amb l'administrador\/a i per tal que revisi la documentació http:\/\/docs.moodle.org\/en\/Mobile_app<\/a><\/p>

Per provar l'aplicaicó a un Moodle de demostració accediu amb teacher<\/i> o student<\/i> a URL del lloc<\/i> i feu clic a Afegeix<\/b>.<\/p>", + "hours": "Hores", + "icantlogin": "No puc iniciar la sessió", "imagestored": "La vostra imatge s'ha emmagatzemat en la vostra àrea de fitxers privats.", "info": "Informació", "initializing": "S'està inicialitzant...", @@ -106,10 +124,11 @@ "invalidmoodleversion": "La versió de Moodle no és vàlida. Versió mínima requerida:", "invalidscheme": "Proporcioneu una adreça URL vàlida.", "invalidsite": "L'URL del lloc no és vàlid.", - "itemname": "Nom de l'element", + "itemname": "Element de qualificació", + "keepsynchronising": "Manté la sincronització de missatges des del servidor", "langsynced": "S'ha sincronitzat l'idioma", "language": "Idioma", - "lettergrade": "Qualificació per lletres", + "lettergrade": "Lletres", "license": "Llicència", "loadcordovaemulator": "Carrega emulador Cordova", "loading": "S'està carregant", @@ -118,21 +137,24 @@ "logininsiterequired": "Heu d'entrar al lloc a través d'una finestra del navegador", "logout": "Sortida", "lostconnection": "S'ha perdut la connexió. Necessita tornar a connectar. El testimoni ja no és vàlid.", + "manageaccounts": "Gestiona comptes", "message": "Missatge", "messages": "Missatges", "messagesent": "S'ha enviat el missatge", - "minutes": "minuts", + "minutes": "Minuts", "mobileservicesnotenabled": "El lloc Moodle no té habilitats els serveis mòbils. Contacteu amb l'administració del vostre Moodle si penseu que haurien d'estar habilitats.", "modulename": "Nom del mòdul", "months": "Mesos", "moodlehelp": "Ajuda", "mycourses": "Els meus cursos", - "myfiles": "Els meus fitxers privats", + "myfiles": "Els meus fitxers", "name": "Nom", "networkerror": "No teniu connexió a la xarxa", "networkerrormsg": "La connexió a la xarxa no està habilitada o no funciona.", - "next": "Continua", + "next": "Següent", "no": "No", + "noevents": "No hi ha cap esdeveniment", + "nomessagesfound": "No s'han trobat missatges", "norefreshdisconnected": "L'opció d'actualitzar requereix una connexió a la xarxa", "notaskstobesynchronized": "No hi ha tasques pendents de sincronització", "noteadded": "S'ha afegit la nota", @@ -140,9 +162,15 @@ "notificationpreferencesnotconfigured": "Les vostres preferències de notificació mòbil no s'han configurat encara. Accediu al vostre lloc Moodle des d'un navegador web i aneu a la configuració de missatgeria dins del vostre perfil d'usuari.", "notifications": "Notificacions", "notificationsdisabled": "Les notificacions no estan habilitades", - "notificationsenabled": "Les notificacions estan habilitades", + "notificationsenabled": "Les notificacions estan habilitades per a tots els vostres llocs Moodle", + "nousersfound": "No s'han trobat usuaris", + "offlinecontacts": "Contactes fora de línia ({$a})", "offlinemode": "Mode fora de línia", "ok": "D'acord", + "onlinecontacts": "Contactes en línia ({$a})", + "openinbrowser": "Obre en un navegador", + "others": "Altres", + "participant": "Participant", "participants": "Participants", "password": "Contrasenya", "passwordlabel": "Contrasenya", @@ -157,12 +185,13 @@ "privatefiles": "Fitxers privats", "purgecaches": "Esborra memòries cau", "range": "Interval", - "rank": "Posició", + "rank": "Rang", "rdebuggingenabledfor": "La depuració remota s'habilitarà durant els segons següents:", "record": "Grava", "recordaudio": "Àudio", "recordstored": "La vostra gravació s'ha emmagatzemat en la vostra àrea de fitxers privats", "remotesystemnotconfiguredfornotifications": "No s'ha configurat la instal·lació de Moodle per a enviar notificacions mòbils. Contacteu amb l'administració del vostre lloc Moodle si penseu que s'hauria d'habilitar.", + "removecontact": "Suprimeix contacte", "replay": "Reprodueix", "reply": "Contesta", "reportabug": "Informa d'un problema", @@ -172,7 +201,7 @@ "resetapp": "Reiniciar aplicació", "save": "Desa", "saving": "S'està desant...", - "seconds": "segons", + "seconds": "Segons", "select": "Selecciona", "selectsite": "Selecciona un lloc", "send": "Envia", @@ -182,7 +211,7 @@ "settings": "Configuració", "showall": "Mostra tot", "showlog": "Mostra el registre", - "showmore": "Mostra'n més...", + "showmore": "Mostra més", "siteexists": "Aquest lloc ja existeix.", "sitefiles": "Fitxers del lloc", "siteinmaintenance": "El vostre lloc està en mode de manteniment", @@ -194,6 +223,7 @@ "spaceusage": "Utilització de l'espai", "stop": "Atura", "strings": "Cadenes", + "submissions": "Trameses", "synchronization": "Sincronització", "syncthistasknow": "Sincronitza ara aquesta tasca", "system": "Sistema", @@ -209,10 +239,12 @@ "total": "Total", "totalusage": "Ús total", "type": "Tipus", + "unblockcontact": "Desbloca contacte", "unexpectederror": "S'ha produït un error inesperat. Tanqueu l'aplicació i torneu a obrir-la per a reintentar-ho.", "update": "Actualitza", "updatesite": "Actualitza el lloc", "upload": "Penja", + "uploadfile": "Penja un fitxer", "uploading": "S'està penjant.", "uploadingtoprivatefiles": "S'està penjant en la vostra àrea de fitxers privats", "uselocalmobileplugin": "Aquesta pàgina funciona millor si el lloc Moodle té instal·lat el connector mòbil opcional.", @@ -223,17 +255,19 @@ "video": "Vídeo", "videofilenameprefix": "iphone_upload-video", "videostored": "El vostre vídeo s'ha desat a la vostra àrea privada", - "view": "Visualització", + "view": "Visualitza", "viewableonthisapp": "Es pot visualitzar en aquesta app", + "viewsubmission": "Visualitza la tramesa", "warning": "Avís", "webservicesnotenabled": "Els serveis web no estan habilitats al vostre lloc. Contacteu amb l'administració del vostre lloc Moodle si penseu que s'haurien d'habilitar.", "webservicesuccessfullyexecuted": "El servei web s'ha executat amb èxit", "website": "Lloc web", - "weight": "ponderació", + "weight": "Pes", "welcome": "Benvingut\/da a l'aplicació mòbil de Moodle", "writeherethebug": "Escriviu aquí una descripció detalla del problema", - "years": "anys", + "years": "Anys", "yes": "Sí", + "youarein": "Estàs a:", "yourpassword": "contrasenya", "yoursiteurl": "https:\/\/elvostremoodle.com", "yourusername": "Nom d'usuari\/ària" diff --git a/lang/cs.json b/lang/cs.json index cead078d3..bb7376d40 100644 --- a/lang/cs.json +++ b/lang/cs.json @@ -8,15 +8,20 @@ "addnote": "Přidat poznámku", "address": "Adresa", "addsite": "Přidat stránku", + "addsubmission": "Přidat řešení úkolu", "allcachesinvalidated": "Vyprázdněny všechny vyrovnávací paměti", "allcachespurged": "Vymazány všechny vyrovnávací paměti", + "allowsubmissionsfromdate": "Povolit odevzdání úkolů od", "areyousurereset": "Jste si jisti, že chcete resetovat aplikaci? Vaše stránky budou smazány.", + "attempnumber": "Číslo pokusu.", "audionotavailable": "Audio vstup hw není k dispozici", "audiorecordinstructions": "Pro spuštění nahrávání zvuku stiskněte tlačítko Nahrát, tlačítko Zastavit pro ukončení záznamu a nahrání souboru.", "authenticating": "Autentizace", "author": "Autor", "average": "Průměr", "back": "Zpět", + "blockcontact": "Blokovat kontakt", + "blockedusers": "Blokovaní uživatelé ({$a})", "browsephotoalbums": "Fotoalba", "cacheexpirationtime": "Vypršení platnosti vyrovnávací paměti (milisekundy)", "cancel": "Zrušit", @@ -24,13 +29,18 @@ "cannotconnect": "Nelze se připojit: Ověřte, zda je zadali správně adresu URL a že používáte Moodle 2.4 nebo novější.", "cannotconnectssl": "Nelze se připojit: Ověřte, zda je zadali správně adresu URL a že používáte Moodle 2.4 nebo novější a SSL certifikát je platný.", "cannotsendmessage": "Nedostupná síť. Vaše zpráva byla uložena do fronty, můžete ji znovu odeslat, jak budete online.", + "chooseaccountuploadfile": "Vyberte účet, pod kterým nahrajete soubor", + "choosefile": "Vyberte soubor", "city": "Město", "close": "Zavřít", "completed": "Dokončeno", "confirmcontinuedownload": "Opravdu chcete pokračovat ve stahování souboru?", "confirmdeletetask": "Jste si jisti, že chcete smazat tento úkol?", + "confirmuploadfile": "Chystáte nahrát {$a}. Jste si jisti, že chcete pokračovat?", + "confirmuploadfiletosite": "Jste si jisti, že chcete nahrát tento soubor na stránky {$a}?", "contact": "Kontakt", "contactadd": "Kontakt je přidán do vašeho seznamu kontaktů telefonu", + "contacts": "Kontakty", "content": "Obsah", "contents": "Obsah", "contentyetnotavailable": "Tento druh činnosti není dosud k dispozici prostřednictvím mobilní aplikace", @@ -40,6 +50,7 @@ "course": "Kurz", "coursename": "Název kurzu", "csssynced": "Vzdálené CSS synchronizováno", + "cutoffdate": "Datum ukončení", "date": "Datum", "days": "Dnů", "delete": "Odstranit", @@ -50,12 +61,16 @@ "details": "Detaily", "development": "Vývoj", "deviceinfo": "Informace zařízení", + "disabled": "Zakázáno", + "disablenotificationforevent": "Pro tuto akci zakázat upozornění", "disablenotifications": "Zakázat upozornění", "disablerdebugger": "Zakázat vzdálené ladění", "discussions": "diskuse", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Stáhnout vzdálený soubor", "downloadtime": "Lze stáhnout", + "duedate": "Termín odevzdání", + "duedateno": "Bez termínu odevzdání", "email": "E-mail", "empty": "prázdný", "enableautosync": "Povolit autosynchronizaci", @@ -64,10 +79,12 @@ "enableautosyncws": "Povolit synchronizaci operací a dat", "enablecss3transitions": "Povolit CSS3 Transitions", "enabledebugging": "Povolit ladící informace", + "enableeventnotifications": "Povolit upozornění pro události", "enablenotifications": "Povolit upozornění", "enablenotificationscheck": "

Měli byste nejprve zkontrolovat, zda váš Moodle podporuje mobilní upozornění (PUSH). Prosím, otevřete váš Moodle a přejděte do nabídky Nastavení \/ Nastavení mého profilu \/ Zasílání zpráv. Měli byste vidět sloupec s názvem Mobilní upozornění.<\/p>", "enablenotificationswarning": "

Aby byla upozornění povolena, potřebujeme uložit na webu Moodle informace, jako je model vašeho mobilního zařízení a operační systém. <\/p>", "enablerdebugger": "Povolit vzdálené ladění", + "enablesyncwifi": "Povolit synchronizaci pouze tehdy, když je dostupné Wi-Fi připojení", "error": "Chyba", "errorcamera": "Chyba přístupu k fotoaparátu", "errorcameramsg": "Zařízení nepodporuje kameru", @@ -78,22 +95,27 @@ "errorduringdevicetokenrequesttoapns": "Chyba tokenu zařízení při požadavku na APNS", "errorlistingfiles": "Chyba při načítání souborů z tohoto adresáře", "errornoconnectednocache": "Přístroj není připojen a v mezipaměti není uložena informace pro vyžadovanou volbu", + "errorreadingfile": "Chyba při čtení souboru \"{$a}\"", + "errorreceivefilenosites": "Nejsou uloženy žádné stránky. Než se pokusíte nahrát soubor, přidejte prosím stránku.", "errorregisteringdeviceinmoodle": "Chyba registraci zařízení v Moodlu", "errorretrievinggradeinformation": "Chyba při stahování informací o známkách", "erroruploading": "Chyba nahrávání souboru", "estimatedfreespace": "Odhadované volné místo", "events": "Událost kalendáře", "feedback": "Zpětná vazba", + "file": "Soubor", "filedownloaded": "Soubor stažen", "filename": "Jméno souboru", "filesize": "Velikost", "fileuploaded": "Soubor nahrán", + "fileuploadedwithname": "Soubor byl úspěšně nahrán s názvem {$a}.", "fileurl": "URL souboru", "forcecsssync": "Vnutit synchronizaci CSS", "forcelangsync": "Vnutit jazykovou synchronizaci", "forceofflinemode": "Vnutit režim offline", "forumnodiscussionsyet": "V tomto diskusním fóru nejsou žádná témata", "forumnumreplies": "odpovědi", + "frontpage": "Titulní stránka", "fullname": "Celé jméno", "general": "Obecné", "grade": "Známka", @@ -140,6 +162,7 @@ "next": "Další", "no": "Ne", "noevents": "Nejsou žádné události", + "nomessagesfound": "Nebyly nalezeny žádné zprávy", "norefreshdisconnected": "Volba obnovit vyžaduje připojení k síti", "notaskstobesynchronized": "Nejsou žádné úkoly, které mají být synchronizovány", "noteadded": "Poznámka přidána", @@ -148,9 +171,14 @@ "notifications": "Upozornění", "notificationsdisabled": "Upozornění jsou zakázána", "notificationsenabled": "Upozornění jsou povolena", + "nousersfound": "Nebyly nalezeni žádní uživatelé", + "offlinecontacts": "Offline kontakty ({$a})", "offlinemode": "Režim offline", "ok": "OK", + "onlinecontacts": "Online kontakty ({$a})", "openinbrowser": "Otevřít v prohlížeči", + "others": "Ostatní", + "participant": "Účastník", "participants": "Účastníci", "password": "Heslo", "passwordlabel": "Heslo", @@ -167,10 +195,12 @@ "range": "Rozsah", "rank": "Pořadí", "rdebuggingenabledfor": "Vzdálené ladění bude aktivováno během následujících sekund:", + "readingfile": "Čtení souboru", "record": "Záznam", "recordaudio": "Audio", "recordstored": "Záznam byl uložen do vaší privátního oblasti", "remotesystemnotconfiguredfornotifications": "Instalace Moodle není nakonfigurována pro zasílání upozornění na mobilní zařízení. Pokud si myslíte, že by upozornění měla být povolena, obraťte se na správce Moodlu.", + "removecontact": "Odstranit kontakt", "replay": "Přehrát", "reply": "Odpovědět", "reportabug": "Zobrazit chybu", @@ -202,6 +232,7 @@ "spaceusage": "Použitý prostor", "stop": "Zastavit", "strings": "Řetězce", + "submissions": "Odpovědi", "synchronization": "Synchronizace", "syncthistasknow": "Tento úkol nyní synchronizujte", "system": "Systém", @@ -218,10 +249,13 @@ "total": "Celkem", "totalusage": "Celkové využití", "type": "Typ", + "unblockcontact": "Odblokovat kontakt", "unexpectederror": "Neočekávaná chyba. Zavřete a znovu otevřete aplikaci a zkuste to znovu, prosím", "update": "Aktualizace", "updatesite": "Aktualizace webu", "upload": "Nahrát", + "uploadfile": "Nahrát soubor", + "uploadfileinstructions": "Chcete-li nahrát soubor, klikněte na tlačítko dole a vyberte soubor, který chcete nahrát.", "uploading": "Nahrávání", "uploadingtoprivatefiles": "Nahrávání do vaší privátního oblasti", "uselocalmobileplugin": "Tato stránka funguje lépe, když je do Moodle doinstalován doplňek \"Moodle Mobile additional features\"", @@ -232,8 +266,9 @@ "video": "Video", "videofilenameprefix": "iphone_upload-video", "videostored": "Vaše video bylo uloženo do privátní oblasti", - "view": "Zobrazit", + "view": "Zobrazení", "viewableonthisapp": "Viditelný v této aplikaci", + "viewsubmission": "Zobrazit odpovědi", "warning": "Varování", "webservicesnotenabled": "Na vašem webu nejsou povoleny webové služby. Pokud si myslíte, že by měl být povolen mobilní přístup, obraťte se prosím na správce Moodlu.", "webservicesuccessfullyexecuted": "Webová služba úspěšně provedena", diff --git a/lang/de.json b/lang/de.json index 445dfa4ca..5aef34464 100644 --- a/lang/de.json +++ b/lang/de.json @@ -4,19 +4,24 @@ "add": "Hinzufügen", "addcontact": "Als Kontakt hinzufügen", "addedtoqueue": "Offline: Der Vorgang wurde in die Warteschlage gesichert.", - "addfakenotifications": "Gefälschte Mitteilungen hinzufügen", + "addfakenotifications": "Fake-Mitteilungen hinzufügen", "addnote": "Hinweis hinzufügen", "address": "Adresse", "addsite": "Website hinzufügen", + "addsubmission": "Abgabe hinzufügen", "allcachesinvalidated": "Alle Caches sind ungültig", "allcachespurged": "Cache gelöscht", + "allowsubmissionsfromdate": "Abgaben erlauben von", "areyousurereset": "Möchten Sie Moodle Mobile wirklich zurücksetzen? Alle gespeicherten Websites werden gelöscht.", - "audionotavailable": "Keine Hardware zur Audioeingabe vorhanden", + "attempnumber": "Versuch Nr.", + "audionotavailable": "Keine Audioeingabe vorhanden", "audiorecordinstructions": "Audiodatei aufnehmen und hochladen", "authenticating": "Wird authentifiziert...", "author": "Autor\/in", "average": "Durchschnitt", "back": "Zurück", + "blockcontact": "Kontakt blockieren", + "blockedusers": "Blockierte Kontakte ({$a})", "browsephotoalbums": "Fotos", "cacheexpirationtime": "Cache-Dauer (Millisekunden)", "cancel": "Abbrechen", @@ -24,37 +29,48 @@ "cannotconnect": "Keine Verbindung: Stellen Sie sicher, dass die URL richtig ist und dass mindestens Moodle 2.4 benutzt wird.", "cannotconnectssl": "Keine Verbindung: Stellen Sie sicher, dass die URL richtig ist und dass mindestens Moodle 2.4 und ein gültiges SSL-Zertifikat benutzt wird.", "cannotsendmessage": "Kein Netzwerk: Die Nachricht wurde in der Warteschlange gesichert und wird später gesendet.", + "chooseaccountuploadfile": "Nutzerkonto für Dateiupload wählen", + "choosefile": "Datei wählen", "city": "Stadt", "close": "Schließen", "completed": "Vollständig", "confirmcontinuedownload": "Möchten Sie die Datei wirklich herunterladen?", "confirmdeletetask": "Möchten Sie diesen Prozess wirklich löschen?", + "confirmuploadfile": "Möchten Sie '{$a}' wirklich hochladen?", + "confirmuploadfiletosite": "Möchten Sie die Datei wirklich hochladen auf '{$a}'?", "contact": "Kontakt", "contactadd": "Kontakt in die Kontaktliste hinzugefügt", + "contacts": "Kontakte", "content": "Inhalt", "contents": "Inhalte", - "contentyetnotavailable": "Diese Aktivität wird nicht von Moodle Mobile unterstützt.", + "contentyetnotavailable": "Diese Aktivität wird von Moodle Mobile nicht unterstützt.", "continue": "Fortsetzen", + "contributiontocoursetotal": "Beitrag zum Kurs", "country": "Land", "course": "Kurs", "coursename": "Kursname", "csssynced": "CSS synchronisiert", + "cutoffdate": "Stichtag", "date": "Datum", "days": "Tage", "delete": "Löschen", "deletesite": "Website wirklich entfernen?", "deletesiteb": "Website entfernen", - "deletesitefiles": "Möchten Sie wirklich alle geladenen Dateien löschen?", + "deletesitefiles": "Möchten Sie wirklich alle von dieser Website geladenen Dateien löschen?", "description": "Beschreibung", "details": "Details", "development": "Entwicklung", "deviceinfo": "Geräteinformation", + "disabled": "Deaktiviert", + "disablenotificationforevent": "Mitteilungen zu diesem Event deaktivieren", "disablenotifications": "Mitteilungen deaktivieren", "disablerdebugger": "Remote-Debugging deaktivieren", "discussions": "Themen", "docsurl": "http:\/\/docs.moodle.org\/de\/Mobile_app", "downloadremotefile": "Datei herunterladen", "downloadtime": "Heruntergeladen", + "duedate": "Fälligkeitsdatum", + "duedateno": "Kein Fälligkeitsdatum", "email": "E-Mail", "empty": "Leer", "enableautosync": "Auto-sync aktivieren", @@ -63,10 +79,12 @@ "enableautosyncws": "Synchronisation von Anweisungen und Daten", "enablecss3transitions": "CSS3-Transitions", "enabledebugging": "Debugging", + "enableeventnotifications": "Mitteilungen zu Events aktivieren", "enablenotifications": "Mitteilungen aktivieren", "enablenotificationscheck": "

Prüfen Sie, ob Ihre Website mobile Mitteilungen unterstützt. Melden Sie in Ihrer Website an und öffnen Sie 'Einstellungen > Mein Profil > Mitteilungen'. Wenn die mobilen Mitteilungen aktiviert sind, sollten Sie eine entsprechende Spalte sehen.<\/p>", "enablenotificationswarning": "

Um die mobilen Mitteilungen zu nutzen, müssen Informationen über Ihr mobiles Endgerät in Moodle gespeichert sein. <\/p>", "enablerdebugger": "Remote-Debugging aktivieren", + "enablesyncwifi": "Synchronisation nur bei Wifi erlauben", "error": "Fehler", "errorcamera": "Fehler beim Kamerazugriff", "errorcameramsg": "Das Gerät unterstützt keine Kamera.", @@ -77,29 +95,34 @@ "errorduringdevicetokenrequesttoapns": "Fehler bei der Tokenanforderung des Geräts an APNS", "errorlistingfiles": "Fehler bei der Dateiauflistung in diesem Verzeichnis", "errornoconnectednocache": "Das Gerät ist nicht verbunden. Informationen für die angeforderte Option sind nicht im Cache gespeichert.", + "errorreadingfile": "Fehler beim Lesen der Datei '{$a}'", + "errorreceivefilenosites": "Keine Websites gespeichert. Bitte wählen Sie eine Website und laden Sie die Datei dann hoch.", "errorregisteringdeviceinmoodle": "Fehler bei der Anmeldung des Geräts", "errorretrievinggradeinformation": "Fehler beim Abrufen der Bewertungsinformationen", "erroruploading": "Fehler beim Hochladen der Datei", "estimatedfreespace": "Verfügbarer Platz", "events": "Kalendereinträge", "feedback": "Feedback", + "file": "Datei", "filedownloaded": "Datei heruntergeladen", "filename": "Dateiname", "filesize": "Größe", "fileuploaded": "Datei hochgeladen", + "fileuploadedwithname": "Datei '{$a}' erfolgreich hochgeladen", "fileurl": "Datei-URL", "forcecsssync": "CSS synchronisieren", "forcelangsync": "Sprache synchronisieren", "forceofflinemode": "Verbindung unterbrechen", "forumnodiscussionsyet": "Keine Diskussionsthemen im Forum", "forumnumreplies": "Antworten", + "frontpage": "Startseite", "fullname": "Vollständiger Name", "general": "Allgemein", "grade": "Bewertung", "grades": "Bewertungen", "groupeventsnotdisplayed": "Gruppentermine werden nicht angezeigt", "help": "Hilfe", - "helpmelogin": "

Weltweit gibt es Tausende vom Moodle Websites. Diese App kann sich nur mit einer Website verbinden, für die der mobile Zugriff aktiviert wurde.<\/p>\n

Wenn Sie sich mit der App nicht verbinden können, informieren Sie den Administrator der Website über das Problem. http:\/\/docs.moodle.org\/de\/Mobile_App<\/a>.<\/p>\n

Um die App mit einer Demo Website zu testen, tragen Sie bitte teacher<\/i> oder student<\/i> in das Feld URL der Website<\/i> ein und klicken Sie auf Hinzufügen<\/b>.<\/p>", + "helpmelogin": "

Diese App kann sich nur mit Moodle-Websites verbinden, für die der mobile Zugriff aktiviert wurde.<\/p>\n

Wenn Sie sich mit der App nicht verbinden können, kontaktieren Sie den Administrator der Website. http:\/\/docs.moodle.org\/de\/Mobile_App<\/a>.<\/p>\n

Um die App mit einer Demo-Website zu testen, tragen Sie bitte teacher<\/i> oder student<\/i> in das Feld URL der Website<\/i> ein und klicken Sie auf Hinzufügen<\/b>.<\/p>", "hours": "Stunden", "icantlogin": "Hilfe anzeigen", "imagestored": "Das Bild wurde in 'Meine Dateien' gesichert.", @@ -107,27 +130,27 @@ "initializing": "Wird initialisiert...", "invalidaccount": "Prüfen Sie Ihre Anmeldedaten oder wenden Sie sich an den Administrator.", "invalidmoodleversion": "Notwendig ist mindestens die Moodle-Version:", - "invalidscheme": "Geben Sie eine gültige URL an.", + "invalidscheme": "Bitte geben Sie eine gültige URL an.", "invalidsite": "Die URL der Website ist falsch.", - "itemname": "Name des Aspekts", + "itemname": "Bewertungselement", "keepsynchronising": "Beiträge mit dem Server synchronisieren", "langsynced": "Sprache synchronisiert", "language": "Sprache", - "lettergrade": "Notenstufenbewertung", + "lettergrade": "Buchstabenwertung", "license": "Lizenz", "loadcordovaemulator": "Cordova-Emulator laden", "loading": "Wird geladen...", "localpath": "Lokaler Pfad", "location": "Ort", - "logininsiterequired": "Sie müssen sich im Browser für diese Website anmelden.", + "logininsiterequired": "Sie müssen sich für diese Website im Browser anmelden.", "logout": "Abmelden", - "lostconnection": "Verbindung unterbrochen. Ihr Token ist ungültig.", + "lostconnection": "Verbindung unterbrochen. Ihr Token ist jetzt ungültig.", "manageaccounts": "Konten verwalten", "message": "Nachricht", - "messages": "Mitteilungen", + "messages": "Nachrichten", "messagesent": "Nachricht gesendet", "minutes": "Minuten", - "mobileservicesnotenabled": "Mobile Webservices sind für dieses Moodle nicht aktiviert. Bitte sprechen Sie mit Ihrem Administrator, wenn Sie den mobilen Zugriff aktiviert haben möchten.", + "mobileservicesnotenabled": "Mobile Webservices sind für diese Website nicht aktiviert. Bitte kontaktieren Sie Ihren Administrator, wenn Sie den mobilen Zugriff aktiviert haben möchten.", "modulename": "Modulname", "months": "Monate", "moodlehelp": "Hilfe", @@ -135,9 +158,11 @@ "myfiles": "Meine Dateien", "name": "Name", "networkerror": "Kein Netzwerk", - "networkerrormsg": "Kein Netzwerk oder fehlerhaft", + "networkerrormsg": "Kein Netzwerk oder Fehler", "next": "Weiter", "no": "Nein", + "noevents": "Keine Events", + "nomessagesfound": "Keine Nachrichten", "norefreshdisconnected": "Die Option 'Aktualisieren' erfordert eine Netzwerkverbindung.", "notaskstobesynchronized": "Kein Prozess zum Synchronisieren", "noteadded": "Hinweis hinzugefügt", @@ -146,12 +171,18 @@ "notifications": "Mitteilungen", "notificationsdisabled": "Mitteilungen sind deaktiviert", "notificationsenabled": "Mitteilungen für alle Ihre Moodle aktiviert", + "nousersfound": "Keine Nutzer\/innen", + "offlinecontacts": "Kontakte offline ({$a})", "offlinemode": "Offline", "ok": "OK", + "onlinecontacts": "Kontakte online ({$a})", + "openinbrowser": "Im Browser öffnen", + "others": "Andere", + "participant": "Person", "participants": "Personen", "password": "Kennwort", "passwordlabel": "Kennwort", - "passwordnotnull": "Geben Sie Ihr Kennwort ein.", + "passwordnotnull": "Bitte geben Sie Ihr Kennwort ein.", "passwordrequired": "Kennwort notwendig", "percentage": "Prozentsatz", "phone1": "Telefon", @@ -164,14 +195,17 @@ "range": "Bandbreite", "rank": "Rang", "rdebuggingenabledfor": "Remote-Debugging ist für Sekunden aktiviert:", + "readingfile": "Datei wird gelesen", "record": "Aufnahme", "recordaudio": "Audio", "recordstored": "Die Aufnahme wurde in 'Meine Dateien' gesichert.", - "remotesystemnotconfiguredfornotifications": "Moodle ist nicht für das Senden von mobilen Mitteilungen konfiguriert. Wenden Sie sich an Ihren Administrator, falls Sie die mobilen Mitteilungen aktiviert haben möchten.", + "remotesystemnotconfiguredfornotifications": "Diese Website ist nicht für das Senden von mobilen Mitteilungen konfiguriert. Wenden Sie sich an Ihren Administrator, falls Sie die mobilen Mitteilungen aktiviert haben möchten.", + "removecontact": "Kontakt entfernen", "replay": "Wiederholung", "reply": "Antworten", "reportabug": "Fehler melden", - "reportbuginfo": "Sie können einen Fehlerbericht per E-Mail versenden. Bitte beschreiben Sie das Problem möglichst genau. Automatisch werden Debug-Informationen hinzugefügt, aber keine persönlichen Daten!", + "reportbuginfo": "Tippen Sie auf die Taste 'Fehlerbericht', um weitere Anleitungen zu bekommen.", + "reportbugurl": "https:\/\/docs.moodle.org\/en\/Moodle_Mobile#How_to_report_a_bug", "requiredfields": "Alle Pflichtfelder müssen ausgefüllt werden.", "reset": "Zurücksetzen", "resetapp": "App zurücksetzen", @@ -187,7 +221,7 @@ "settings": "Einstellungen", "showall": "Alles anzeigen", "showlog": "Logdaten anzeigen", - "showmore": "Mehr anzeigen...", + "showmore": "Mehr anzeigen", "siteexists": "Diese Website ist bereits vorhanden.", "sitefiles": "Dateien", "siteinmaintenance": "Die Website ist im Wartungsmodus.", @@ -195,10 +229,11 @@ "sites": "Websites", "siteurl": "URL der Website", "siteurllabel": "URL der Website", - "siteurlrequired": "Die URL der Website ist notwendig, z.B. http:\/\/meinmoodle.de oder https:\/\/meinmoodle.de", + "siteurlrequired": "Die URL der Website ist notwendig, z.B. https:\/\/meinmoodle.de", "spaceusage": "Speicherplatz", "stop": "Stopp", "strings": "Texte", + "submissions": "Einsendungen", "synchronization": "Synchronisation", "syncthistasknow": "Prozess synchronisieren", "system": "System", @@ -214,13 +249,16 @@ "total": "Gesamt", "totalusage": "Gesamtnutzung", "type": "Typ", - "unexpectederror": "Unbekannter Fehler. Beenden Sie die App und versuchen Sie es dann noch einmal.", + "unblockcontact": "Kontakt freigeben", + "unexpectederror": "Unbekannter Fehler! Beenden Sie die App und versuchen Sie es dann noch einmal.", "update": "Aktualisieren", "updatesite": "Website aktualisieren", "upload": "Hochladen", + "uploadfile": "Datei hochladen", + "uploadfileinstructions": "Um eine Datei hochzuladen, tippen Sie auf die Taste und wählen Sie die Datei aus.", "uploading": "Wird hochgeladen...", "uploadingtoprivatefiles": "Wird in 'Meine Dateien' hochgeladen...", - "uselocalmobileplugin": "Diese Seite funktioniert besser, wenn das optionale Plugin 'Moodle Mobile - Zusatzfeatures' für Ihre Website installiert wird.", + "uselocalmobileplugin": "Diese Website funktioniert besser, wenn das optionale Plugin 'Moodle Mobile - Zusatzfeatures' installiert ist.", "userfrom": "Von", "username": "Anmeldename", "usernamelabel": "Anmeldename", @@ -228,8 +266,9 @@ "video": "Video", "videofilenameprefix": "mobile-video", "videostored": "Das Video wurde in 'Meine Dateien' gesichert.", - "view": "Zum Kurs", + "view": "Anzeigen", "viewableonthisapp": "Anzeige in der App", + "viewsubmission": "Einsendung anzeigen", "warning": "Warnung", "webservicesnotenabled": "Webservices sind für diese Website nicht aktiviert. Bitte sprechen Sie mit Ihrem Administrator, wenn Sie den mobilen Zugriff aktiviert haben möchten.", "webservicesuccessfullyexecuted": "Webservice erfolgreich ausgeführt", diff --git a/lang/en.json b/lang/en.json index 9988c9da6..20ab96d43 100644 --- a/lang/en.json +++ b/lang/en.json @@ -7,15 +7,20 @@ "addnote": "Add a note", "address": "Address", "addsite": "Add a site", +"addsubmission": "Add submission", "allcachespurged": "All caches purged", "allcachesinvalidated": "All caches invalidated", +"allowsubmissionsfromdate": "Allow submissions from", "areyousurereset" : "Are you sure you want to reset the application? All of your sites will be deleted.", +"attempnumber" : "Attempt number.", "audionotavailable": "Audio input hardware not available", "audiorecordinstructions": "Press Record to start the audio recording, Stop to stop and upload the file.", "authenticating": "Authenticating", "author": "Author", "average": "Average", "back": "Back", +"blockcontact": "Block contact", +"blockedusers": "Blocked users ({$a})", "browsephotoalbums": "Photo albums", "cacheexpirationtime": "Cache expiration time (miliseconds)", "cancel": "Cancel", @@ -23,12 +28,17 @@ "cannotconnect": "Cannot connect: Verify that your have typed correctly the URL and that your site uses Moodle 2.4 or later.", "cannotconnectssl": "Cannot connect: Verify that your have typed correctly the URL, your site uses Moodle 2.4 or later and the SSL certificate is valid.", "cannotsendmessage": "Network not reachable. Your message has been saved in task queue; you can resend it once you are online.", +"chooseaccountuploadfile": "Choose an account to upload the file to", +"choosefile": "Choose a file", "city": "City", "close": "Close", "completed": "Completed", "confirmcontinuedownload": "Are you sure you want to continue downloading the file?", "confirmdeletetask": "Are you sure you want to delete this task?", +"confirmuploadfile": "You are about to upload {$a}. Are you sure you want to continue?", +"confirmuploadfiletosite": "Are you sure you want to upload this file to the site {$a}?", "contact": "Contact", +"contacts": "Contacts", "contactadd": "Contact added to your phone contacts list", "content": "Content", "contents": "Contents", @@ -39,6 +49,7 @@ "course": "Course", "coursename": "Course name", "csssynced": "Remote CSS synced", +"cutoffdate": "Cut-off date", "date": "Date", "days": "Days", "delete": "Delete", @@ -51,8 +62,13 @@ "development": "Development", "discussions": "discussions", "downloadtime": "Downloaded", +"disabled": "Disabled", +"disablenotificationforevent": "Disable notification for this event", "disablenotifications": "Disable notifications", "disablerdebugger": "Disable remote debugging", +"duedate": "Due date", +"duedateno": "No due date", +"enableeventnotifications": "Enable events notifications", "enablecss3transitions": "Enable CSS3 Transitions", "errorcapturingaudio": "Error capturing audio", "events": "Calendar events", @@ -68,6 +84,7 @@ "enablenotifications": "Enable notifications", "enablenotificationscheck": "

You should check first if your Moodle site supports Mobile notifications, please open your Moodle site and go to Administration / My profile settings / Messaging. If Mobile Notifications are enabled you should see a column called Mobile Notifications

", "enablenotificationswarning": "

In order to enable notifications we need to store information like your mobile device model and operating system in the Moodle site.

", +"enablesyncwifi": "Allow sync only when on Wi-Fi", "error": "Error", "errorcamera": "Error accessing camera", "errorcameramsg": "Device does not support a camera", @@ -75,6 +92,8 @@ "errordownloading": "Error downloading file", "errorlistingfiles": "Error retrieving files from this directory", "errornoconnectednocache": "The device is not conected and there is not cached information available for the option requested", +"errorreadingfile": "Error reading file \"{$a}\"", +"errorreceivefilenosites": "There are no sites stored. Please add a site before trying to upload a file.", "errorregisteringdeviceinmoodle": "Error registering device in Moodle", "errorretrievinggradeinformation": "Error retrieving grade information", "errorduringdevicetokenrequest": "Error during device token request", @@ -82,15 +101,18 @@ "erroruploading": "Error uploading file", "estimatedfreespace": "Estimated free space", "feedback": "Feedback", +"file": "File", "filedownloaded": "File downloaded", "filename": "File name", "filesize": "Size", "fileuploaded": "File uploaded", +"fileuploadedwithname": "File successfully uploaded with name {$a}.", "fileurl": "File URL", "forcecsssync": "Force CSS sync now", "forceofflinemode": "Force offline mode", "forumnodiscussionsyet": "There are no discussion topics yet in this forum", "forumnumreplies": "replies", +"frontpage": "Front page", "fullname": "Full name", "general": "General", "grade": "Grade", @@ -136,6 +158,7 @@ "next": "Next", "no": "No", "noevents": "There are no events", +"nomessagesfound": "No messages were found", "norefreshdisconnected": "The refresh option requires network connection", "notaskstobesynchronized": "No tasks to be synchronized", "noteadded": "Note added", @@ -145,9 +168,14 @@ "notificationsdisabled": "Notifications are disabled", "notificationpreferencesnotconfigured": "Your mobile notification preferences are not yet configured. To do this log into your Moodle site using a web browser and go to the Messaging settings under your user profile.", "notificationshowtoenable": "", +"nousersfound": "No users found", "offlinemode": "Offline mode", "ok": "OK", +"onlinecontacts": "Online contacts ({$a})", +"offlinecontacts": "Offline contacts ({$a})", "openinbrowser": "Open in browser", +"others": "Others", +"participant": "Participant", "participants": "Participants", "password": "Password", "passwordlabel": "Password", @@ -163,14 +191,17 @@ "rank": "Rank", "range": "Range", "rdebuggingenabledfor": "Remote debugging will be enabled during the following seconds: ", +"readingfile": "Reading file", "record": "Record", "recordstored": "Your recording has been stored in your private area", "recordaudio": "Audio", "remotesystemnotconfiguredfornotifications": "The Moodle installation is not configured for sending mobile notifications. Please contact your Moodle administrator if you think notifications should be enabled.", +"removecontact": "Remove contact", "replay": "Replay", "reply": "Reply", "reportabug": "Report a bug", -"reportbuginfo": "Tap on the email button for sending a bug report via email

Don't forget to write a detailed description of the problem in the email body

Note that some debugging information will be attached (not private information)", +"reportbuginfo": "Tap on the report a bug button for instructions.", +"reportbugurl": "https://docs.moodle.org/en/Moodle_Mobile#How_to_report_a_bug", "requiredfields": "All required fields must be completed.", "reset": "Reset", "resetapp": "Reset application", @@ -198,13 +229,13 @@ "spaceusage": "Space usage", "stop": "Stop", "strings": "Strings", +"submissions": "Submissions", "synchronization": "Synchronization", "syncthistasknow": "Synchronize this task now", "system": "System", "takephoto": "Take photo", "takepicture": "Camera", "taskqueue": "Task queue", -"therearentmessagesyet": "There are no messages", "therearentnotificationsyet": "There are no notifications", "threemonthsmore": "Show 3 months more", "timecreated": "Date added", @@ -214,10 +245,13 @@ "total": "Total", "totalusage": "Total usage", "type": "Type", +"unblockcontact": "Unblock contact", "unexpectederror": "Unexepected error. Please close and reopen the application to try again", "update": "Update", "updatesite": "Update the site", "upload": "Upload", +"uploadfile": "Upload file", +"uploadfileinstructions": "To upload a file, click the button below and choose the file you want to upload.", "uploadingtoprivatefiles": "Uploading to your private files area", "uploading": "Uploading", "uselocalmobileplugin": "This page works better when the Moodle site has the optional Mobile plugin installed", @@ -229,6 +263,7 @@ "videofilenameprefix": "iphone_upload-video", "videostored": "Your video has been stored in your private area", "view": "View", +"viewsubmission": "View submission", "viewableonthisapp": "Viewable on this app", "warning": "Warning", "webservicesnotenabled": "Web Services are not enabled in your site. Please, contact your Moodle site administrator if you think mobile access should be enabled.", diff --git a/lang/es.json b/lang/es.json index d19467e05..0ed975312 100644 --- a/lang/es.json +++ b/lang/es.json @@ -8,8 +8,10 @@ "addnote": "Añadir una nota", "address": "Dirección", "addsite": "Añadir un sitio", + "addsubmission": "Agregar entrega", "allcachesinvalidated": "Todas las cachés invalidadas", "allcachespurged": "Todas las cachés han sido borradas", + "allowsubmissionsfromdate": "Permitir entregas desde", "areyousurereset": "¿Está seguro que desea reiniciar la aplicación? Todos sus sitios serán borrados.", "audionotavailable": "Hardware de entrada de audio no disponible", "audiorecordinstructions": "Presione Grabar para iniciar la grabación, Detener para parar y subir el archivo .", @@ -17,6 +19,8 @@ "author": "Autor", "average": "Media", "back": "Atrás", + "blockcontact": "Bloquear contacto", + "blockedusers": "Usuarios bloqueados ({$a})", "browsephotoalbums": "Álbumes de fotos", "cacheexpirationtime": "Tiempo de expiración de caché (mili segundos)", "cancel": "Cancelar", @@ -24,6 +28,7 @@ "cannotconnect": "No se puede conectar: Verifique que la URL es correcta y que el sitio Moodle usa la versión 2.4 o posterior.", "cannotconnectssl": "No se puede conectar: Verifique que la URL es correcta y que el sitio Moodle usa la versión 2.4 o posterior y que el certificado SSL es válido.", "cannotsendmessage": "Está desconectado. Su mensaje se ha añadido a la lista de tareas pendientes, una vez reconectado se podrá enviar.", + "choosefile": "Seleccione un archivo", "city": "Ciudad", "close": "Cerrar", "completed": "Completado", @@ -31,6 +36,7 @@ "confirmdeletetask": "¿Está seguro de que desea borrar esta tarea?", "contact": "Contacto", "contactadd": "Contacto añadido a su libreta de contactos", + "contacts": "Contactos", "content": "Contenido", "contents": "Contenidos", "contentyetnotavailable": "Este tipo de actividad no está disponible aún", @@ -40,6 +46,7 @@ "course": "Curso", "coursename": "Nombre del curso", "csssynced": "CSS remota sincronizada", + "cutoffdate": "Fecha límite", "date": "Fecha", "days": "Días", "delete": "Borrar", @@ -50,12 +57,16 @@ "details": "Detalles", "development": "Desarrollo", "deviceinfo": "Información de dispositivo", + "disabled": "La mensajería está deshabilitada en este sitio", + "disablenotificationforevent": "Deshabilitar notificaciones para este evento", "disablenotifications": "Deshabilitar notificaciones", "disablerdebugger": "Deshabilitar depuración remota", "discussions": "discusiones", "docsurl": "http:\/\/docs.moodle.org\/es\/Mobile_app", "downloadremotefile": "Descargar archivo remoto", "downloadtime": "Descargado", + "duedate": "Fecha de entrega", + "duedateno": "No hay fecha de entrega", "email": "Email", "empty": "vacío", "enableautosync": "Habilitar sincronización automática", @@ -64,10 +75,12 @@ "enableautosyncws": "Habilitar sincronización de tareas pendientes", "enablecss3transitions": "Habilitar transiciones CSS3", "enabledebugging": "Activar modo debug", + "enableeventnotifications": "Habilitar notificaciones de evento", "enablenotifications": "Habilitar notificaciones PUSH", "enablenotificationscheck": "

Primero debe comprobar si su sitio Moodle tiene habilitadas notificaciones PUSH, para ello abra su sitio Moodle en un navegador y vaya a Administración \/ Mis opciones de perfil \/ Mensajes. Si las notificaciones PUSH están habilitadas verá una columna llamada Mobile PUSH Notifications<\/p>", "enablenotificationswarning": "

Para poder habilitar notificaciones PUSH hemos de almacenar información referente a tu dispositivo móvil en tu sitio Moodle.<\/p>", "enablerdebugger": "Habilitar depuración remota", + "enablesyncwifi": "Permitir sincronizar sólo si existe conexión Wi-Fi disponible", "error": "Error", "errorcamera": "Error accediendo a la cámara", "errorcameramsg": "El dispositivo no dispone de cámara", @@ -78,12 +91,14 @@ "errorduringdevicetokenrequesttoapns": "Error en la petición de un token a APNS", "errorlistingfiles": "Ocurrió un error al obtener los archivos de este directorio", "errornoconnectednocache": "El dispositivo no está conectado y no hay información cacheada disponible para la opción requerida", + "errorreadingfile": "Error al leer el archivo \"{$a}\"", "errorregisteringdeviceinmoodle": "Error registrando el dispositivo en Moodle", "errorretrievinggradeinformation": "Ocurrió un error obteniendo información de las calificaciones", "erroruploading": "Error subiendo archivo", "estimatedfreespace": "Espacio libre (estimado)", "events": "Eventos del calendario", "feedback": "Retroalimentación", + "file": "Archivo", "filedownloaded": "Archivo descargado", "filename": "Nombre de archivo", "filesize": "Tamaño", @@ -140,6 +155,7 @@ "next": "Siguiente", "no": "No", "noevents": "No hay eventos", + "nomessagesfound": "No se encontraron mensajes", "norefreshdisconnected": "La opción de \"Actualizar\" requiere conexión a Internet", "notaskstobesynchronized": "No hay tareas pendiente de sincronización", "noteadded": "Nota añadida", @@ -149,9 +165,14 @@ "notificationsdisabled": "Las notificaciones están deshabilitadas", "notificationsenabled": "Notificaciones habilitadas", "notificationshowtoenable": "", + "nousersfound": "No se encuentran usuarios", + "offlinecontacts": "Contactos fuera de línea ({$a})", "offlinemode": "Modo desconectado", "ok": "OK", + "onlinecontacts": "Contactos en línea ({$a})", "openinbrowser": "Abrir en navegador", + "others": "Otros", + "participant": "Participante", "participants": "Participantes", "password": "Contraseña", "passwordlabel": "Contraseña", @@ -172,6 +193,7 @@ "recordaudio": "Audio", "recordstored": "Tu grabación ha sido almacenada en tu zona de archivos privada", "remotesystemnotconfiguredfornotifications": "La instalación de Moodle no está configurada para enviar notificaciones móvil. Por favor, contacte con su administrador de Moodle si piensa que las notificaciones deberían estar habilitadas.", + "removecontact": "Eliminar contacto", "replay": "Reproducir", "reply": "Responder", "reportabug": "Informar de un problema", @@ -203,6 +225,7 @@ "spaceusage": "Espacio", "stop": "Detener", "strings": "Cadenas", + "submissions": "Entregas", "synchronization": "Sincronización", "syncthistasknow": "Sincronizar esta tarea ahora", "system": "Sistema", @@ -219,10 +242,12 @@ "total": "Total", "totalusage": "Total utilizado", "type": "Tipo", + "unblockcontact": "Desbloquear contacto", "unexpectederror": "Error inesperado. Por favor cierre y vuelva a abrir la aplicación para intentarlo de nuevo", "update": "Actualizar", "updatesite": "Actualizar el sitio", "upload": "Subir", + "uploadfile": "Subir archivo", "uploading": "Subiendo", "uploadingtoprivatefiles": "Subiendo a su área de archivos privada", "uselocalmobileplugin": "Esta página funciona mejor si el sitio Moodle tiene el plugin de funcionalidades adicionales móvil instalado", @@ -233,8 +258,9 @@ "video": "Vídeo", "videofilenameprefix": "iphone_upload-video", "videostored": "Su vídeo se ha almacenado en su área de archivos privada", - "view": "Vista", + "view": "Ver", "viewableonthisapp": "Visualizable en el app", + "viewsubmission": "Ver entrega", "warning": "Advertencia", "webservicesnotenabled": "Los Servicios Web no están habilitados en su sitio, por favor, contacte con su administrador de Moodle si piensa que deberían estarlo.", "webservicesuccessfullyexecuted": "Petición a servicio web ejecutada correctamente", diff --git a/lang/es_mx.json b/lang/es_mx.json index 26726c035..15a7a900c 100644 --- a/lang/es_mx.json +++ b/lang/es_mx.json @@ -8,8 +8,10 @@ "addnote": "Añadir una nota", "address": "Dirección", "addsite": "Añadir un sitio", + "addsubmission": "Añadir envío", "allcachesinvalidated": "Todas las cachés invalidadas", "allcachespurged": "Todas las cachés han sido borradas", + "allowsubmissionsfromdate": "Permitir envíos desde", "areyousurereset": "¿Está seguro que desea reiniciar la aplicación? Todos sus sitios serán borrados.", "audionotavailable": "Hardware de entrada de audio no disponible", "audiorecordinstructions": "Presione Grabar para iniciar la grabación, Detener para parar y subir el archivo .", @@ -17,6 +19,8 @@ "author": "Autor", "average": "Promedio", "back": "Atrás", + "blockcontact": "Bloquear contacto", + "blockedusers": "Usuarios bloqueados ({$a})", "browsephotoalbums": "Álbumes de fotos", "cacheexpirationtime": "Tiempo de caducidad del caché (mili segundos)", "cancel": "Cancelar", @@ -24,6 +28,7 @@ "cannotconnect": "No se puede conectar: Verifique que la URL es correcta y que el sitio Moodle usa la versión 2.4 o posterior.", "cannotconnectssl": "No se puede conectar: Verifique que la URL es correcta y que el sitio Moodle usa la versión 2.4 o posterior y que el certificado SSL es válido.", "cannotsendmessage": "Está desconectado. Su mensaje se ha añadido a la lista de tareas pendientes, una vez reconectado se podrá enviar.", + "choosefile": "Seleccione un archivo", "city": "Ciudad", "close": "Cerrar", "completed": "Completado", @@ -31,6 +36,7 @@ "confirmdeletetask": "¿Está Usted seguro de querer eliminar esta tarea\/actividad?", "contact": "Contacto", "contactadd": "Contacto añadido a su libreta de contactos", + "contacts": "Contactos", "content": "Contenido", "contents": "Contenidos", "contentyetnotavailable": "Este tipo de actividad no está disponible mediante la App para móviles", @@ -39,6 +45,7 @@ "course": "Curso", "coursename": "Nombre del curso", "csssynced": "CSS remota sincronizada", + "cutoffdate": "Fecha de corte", "date": "Fecha", "days": "Días", "delete": "Borrar", @@ -49,12 +56,15 @@ "details": "Detalles", "development": "Desarrollo", "deviceinfo": "Información de dispositivo", + "disabled": "La mensajería está deshabilitada en este sitio", "disablenotifications": "Deshabilitar notificaciones", "disablerdebugger": "Deshabilitar depuración remota", "discussions": "Discusiones", "docsurl": "http:\/\/docs.moodle.org\/es\/Mobile_app", "downloadremotefile": "Descargar archivo remoto", "downloadtime": "Descargado", + "duedate": "Fecha de entrega", + "duedateno": "No hay fecha de entrega", "email": "Email", "empty": "vacío", "enableautosync": "Habilitar sincronización automática", @@ -77,12 +87,14 @@ "errorduringdevicetokenrequesttoapns": "Error en la petición de una ficha (token) a APNS", "errorlistingfiles": "Error al recuperar archivos de este directorio", "errornoconnectednocache": "El dispositivo no está conectado y no hay información cacheada disponible para la opción solicitada", + "errorreadingfile": "Error al leer el archivo \"{$a}\"", "errorregisteringdeviceinmoodle": "Error registrando el dispositivo en Moodle", "errorretrievinggradeinformation": "Error al recabar información de calificación", "erroruploading": "Error subiendo archivo", "estimatedfreespace": "Espacio libre (estimado)", "events": "Eventos del calendario", "feedback": "Retroalimentación", + "file": "Archivo", "filedownloaded": "Archivo descargado", "filename": "Nombre de archivo", "filesize": "Tamaño", @@ -135,6 +147,7 @@ "networkerrormsg": "Conexión no disponible o sin funcionar.", "next": "Continuar", "no": "No", + "nomessagesfound": "No se encontraron mensajes", "norefreshdisconnected": "La opción para refrescar requiere conexión a red", "notaskstobesynchronized": "No hay tareas pendiente de sincronización", "noteadded": "Nota añadida", @@ -144,8 +157,13 @@ "notificationsdisabled": "Las notificaciones están deshabilitadas", "notificationsenabled": "Notificaciones habilitadas para todos sus sitios Moodle", "notificationshowtoenable": "", + "nousersfound": "No se encuentran usuarios", + "offlinecontacts": "Contactos fuera de línea ({$a})", "offlinemode": "Modo desconectado", "ok": "OK", + "onlinecontacts": "Contactos en línea ({$a})", + "others": "Otros", + "participant": "Participante", "participants": "Participantes", "password": "Contraseña", "passwordlabel": "Contraseña", @@ -166,6 +184,7 @@ "recordaudio": "Audio", "recordstored": "Tu grabación ha sido almacenada en tu zona de archivos privada", "remotesystemnotconfiguredfornotifications": "La instalación de Moodle no está configurada para enviar notificaciones a móviles. Por favor, contacte a su administrador de Moodle si Usted piensa que deberían de habilitarse las notificaciones.", + "removecontact": "Eliminar contacto", "replay": "Reproducir", "reply": "Respuesta", "reportabug": "Informar de un problema", @@ -197,6 +216,7 @@ "spaceusage": "Espacio", "stop": "Detener", "strings": "Cadenas de texto", + "submissions": "Entregas", "synchronization": "Sincronización", "syncthistasknow": "Sincronizar ahora esta tarea\/actividad", "system": "Sistema", @@ -212,10 +232,12 @@ "total": "Total", "totalusage": "Total utilizado", "type": "Escribir", + "unblockcontact": "Desbloquear contacto", "unexpectederror": "Error inesperado. Por favor cierre y vuelva a abrir la aplicación para intentarlo de nuevo", "update": "Actualizar", "updatesite": "Actualizar el sitio", "upload": "Subir", + "uploadfile": "Subir archivo", "uploading": "Subiendo", "uploadingtoprivatefiles": "Subiendo a su área de archivos privada", "uselocalmobileplugin": "Esta página funciona mejor cuando el sitio Moodle tiene instalado el plugin opcional (complemento) Mobile (Móvil)", @@ -228,6 +250,7 @@ "videostored": "Su video ha sido almacenado en su área privada", "view": "Vista", "viewableonthisapp": "Visualizable en el app", + "viewsubmission": "Ver entrega", "warning": "Advertencia", "webservicesnotenabled": "Los servicios web no están habilitados en su sitio. Por favor, contacte a su administrador del sitio Moodle si Usted piensa que se debería habilitar el acceso por dispositivos móviles.", "webservicesuccessfullyexecuted": "Servicio Web ejecutado exitosamente", diff --git a/lang/eu.json b/lang/eu.json index c5be183ea..a23d0845a 100644 --- a/lang/eu.json +++ b/lang/eu.json @@ -8,15 +8,19 @@ "addnote": "Gehitu oharra", "address": "Helbidea", "addsite": "Gehitu gunea", + "addsubmission": "Gehitu bidalketa", "allcachesinvalidated": "Cache guztiak baliogabeturik", "allcachespurged": "Cache guztiak ezabatu dira", + "allowsubmissionsfromdate": "Baimendu bidalketak hemendik:", "areyousurereset": "Ziur zaude aplikazioa berrabiarazi nahi duzula? Zure gune guztiak ezabatuko dira.", "audionotavailable": "Audio-sarrerarako hardware-a ez dago eskuragarri", "audiorecordinstructions": "Grabatu botoia sakatu audio grabaketa hasteko. Gelditu botoia sakatu geratu eta fitxategia igotzeko.", "authenticating": "Egiaztatzen", "author": "Egilea", - "average": "Batez bestekoa", + "average": "Batezbestekoa", "back": "Atzera", + "blockcontact": "Blokeatu kontaktua", + "blockedusers": "Blokeatutako erabiltzaileak ({$a})", "browsephotoalbums": "Argazki bildumak", "cacheexpirationtime": "Cache-aren iraungitze denbora (milisegundotan)", "cancel": "Utzi", @@ -24,21 +28,28 @@ "cannotconnect": "Ezin izan da konektatu. URLa ondo idatzi duzula eta zure Moodle-ak 2.4 edo goragoko bertsioa erabiltzen duela egiaztatu ezazu.", "cannotconnectssl": "Ezin izan da konektatu. URLa ondo idatzi duzula eta zure Moodle-ak 2.4 edo goragoko bertsioa eta baliozko SSL ziurtagiri bat erabiltzen duela egiaztatu ezazu.", "cannotsendmessage": "Sarea ez dago eskuragarri. Zure mezua atazen zerrendan gorde da; konektatzen zarenean berriz bidali dezakezu.", + "chooseaccountuploadfile": "Aukeratu kontu bat fitxategia bertara igotzeko", + "choosefile": "Aukeratu fitxategi bat", "city": "Hiria", "close": "Itxi", "completed": "Osatuta", "confirmcontinuedownload": "Ziur al zaude fitxategiaren jaitsierarekin jarraitu nahi duzula?", "confirmdeletetask": "Ziur al zaude ataza hau ezabatu nahi duzula?", + "confirmuploadfile": "{$a} igotzear zaude. Ziur al zaude aurrera egin nahi duzula?", + "confirmuploadfiletosite": "Ziur al zaude fitxategi hau {$a} gunera igo nahi duzula?", "contact": "Kontaktua", "contactadd": "Kontaktua zure telefonoaren kontaktu zerrendan gehitu da", + "contacts": "Kontaktuak", "content": "Edukia", "contents": "Edukiak", "contentyetnotavailable": "Jarduera mota hau oraindik ez dago mobile app bidez eskuragarri", "continue": "Jarraitu", + "contributiontocoursetotal": "Ikastarora guztira egindako ekarpena", "country": "Herrialdea", "course": "Ikastaroa", "coursename": "Ikastaroaren izena", "csssynced": "Urruneko CSSa sinkronizaturik", + "cutoffdate": "Itxiera-data", "date": "Data", "days": "Egun(ak)", "delete": "Ezabatu", @@ -49,12 +60,16 @@ "details": "Xehetasunak", "development": "Garapena", "deviceinfo": "Gailuaren informazioa", + "disabled": "Desgaituta", + "disablenotificationforevent": "Desgaitu jakinarazpenak ekitaldi honetarako", "disablenotifications": "Desgaitu jakinarazpenak", "disablerdebugger": "Desgaitu urruneko arazketa", "discussions": "eztabaidak", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Jaitsi urruneko fitxategia", "downloadtime": "Jaitsita", + "duedate": "Entregatze-data", + "duedateno": "Entregatze-datarik ez", "email": "E-posta", "empty": "hutsik", "enableautosync": "Gaitu sinkronizazio automatikoa", @@ -63,10 +78,12 @@ "enableautosyncws": "Eragiketa eta datuen sinkronizazioa", "enablecss3transitions": "Gaitu CSS3 trantsizioa", "enabledebugging": "Gaitu arazketa", + "enableeventnotifications": "Gaitu ekitaldien jakinarazpenak", "enablenotifications": "Gaitu jakinarazpenak", "enablenotificationscheck": "

Hasteko zure Moodle guneak Mobile jakinarazpenak onartzen dituen egiaztatu beharko zenuke, ireki mesedez zure Moodle guneko Kudeaketa \/ Nire profilaren ezarpenak \/ Mezularitza atala. Mobile jakinarazpenak gaituta badaude bertan Mobile Jakinarazpenak izeneko zutabea ikusi beharko zenuke<\/p>", "enablenotificationswarning": "

Jakinarazpenak gaitzeko Moodle gunean zure gailuaren modeloa eta sistema eragilearen gaineko informazioa gorde behar dugu<\/p>", "enablerdebugger": "Gaitu urruneko arazketa", + "enablesyncwifi": "Baimendu sinkronizazioa Wi-Fi bidez soilik", "error": "Errorea", "errorcamera": "Errorea kamera atzitzean", "errorcameramsg": "Gailuak ez du kamerarik onartzen", @@ -77,22 +94,27 @@ "errorduringdevicetokenrequesttoapns": "Errorea APNSri gailu token-a eskatzean", "errorlistingfiles": "Errorea fitxategiak karpeta honetatik berreskuratzean", "errornoconnectednocache": "Gailuak ez du konexiorik eta ez dago eskatutako aukera horretarako cacheatutako informaziorik", + "errorreadingfile": "Errorea \"{$a}\" fitxategia irakurtzean", + "errorreceivefilenosites": "Ez dago gordetako gunerik. Mesedez gehitu gune bat fitxategia igotzen saiatu baino lehen.", "errorregisteringdeviceinmoodle": "Errorea gailua Moodle-n erregistratzean", "errorretrievinggradeinformation": "Errorea kalifikazioaren informazioa berreskuratzean", "erroruploading": "Errorea fitxategia igotzean", "estimatedfreespace": "Estimatutako leku librea", "events": "Egutegiko gertakariak", "feedback": "Feedback-a", + "file": "Fitxategia", "filedownloaded": "Filtxategia jaitsita", "filename": "Fitxategiaren izena", "filesize": "Tamaina", "fileuploaded": "Fitxategia igo da", + "fileuploadedwithname": "Fitxategia ondo igo da {$a} izenarekin.", "fileurl": "Fitxategiaren URLa", "forcecsssync": "CSS sinkronizazioa behartu orain", "forcelangsync": "Hizkuntza sinkronizazioa behartu orain", "forceofflinemode": "Behartu lineaz kanpoko modua", "forumnodiscussionsyet": "Oraindik ez dago eztabaida-gairik foro honetan", "forumnumreplies": "erantzunak", + "frontpage": "Hasiera-orria", "fullname": "Izen osoa", "general": "Orokorra", "grade": "Kalifikazioa", @@ -109,7 +131,7 @@ "invalidmoodleversion": "Moodle bertsio baliogabea. Gutxieneko bertsioa hurrengoa da:", "invalidscheme": "Baliozko URL bat eman, mesedez", "invalidsite": "Guneko URLa ez da baliozkoa", - "itemname": "Elementuaren izena", + "itemname": "Elementua kalifikatu", "keepsynchronising": "Jarraitu mezuak zerbitzariarekin sinkronizatzen", "langsynced": "Hizkuntza sinkronizaturik", "language": "Hizkuntza", @@ -138,6 +160,8 @@ "networkerrormsg": "Sarea ez dago gaituta edo ez dabil", "next": "Hurrengoa", "no": "Ez", + "noevents": "Ez dago ekitaldirik", + "nomessagesfound": "Ez da mezurik aurkitu", "norefreshdisconnected": "Freskatze aukerak sare-konexioa behar du", "notaskstobesynchronized": "Ez dago sinkronizatu beharreko atazarik", "noteadded": "Oharra gehituta", @@ -147,8 +171,14 @@ "notificationsdisabled": "Jakinarazpenak desgaituta daude", "notificationsenabled": "Jakinarazpenak zure Moodle gune guztientzat gaituta", "notificationshowtoenable": "", + "nousersfound": "Ez da erabiltzailerik aurkitu", + "offlinecontacts": "Lineaz kanpoko kontaktuak ({$a})", "offlinemode": "Lineazko kanpoko modua", "ok": "Ados", + "onlinecontacts": "Online dauden kontaktuak ({$a})", + "openinbrowser": "Ireki nabigatzailean", + "others": "Beste batzuk", + "participant": "Partaidea", "participants": "Partaideak", "password": "Pasahitza", "passwordlabel": "Pasahitza", @@ -165,14 +195,17 @@ "range": "Tartea", "rank": "Sailkapena", "rdebuggingenabledfor": "Urruneko arazketa gaituko da hurrengo epean (segunduetan):", + "readingfile": "Fitxategia irakurtzen", "record": "Grabatu", "recordaudio": "Audio", "recordstored": "Zure grabaketa zure fitxategi pribatuen atalean gorde da", "remotesystemnotconfiguredfornotifications": "Moodle instalazioa ez dago Mobile jakinarazpenak bidaltzeko konfiguraturik. Zure Moodle administratzailearekin harremanetan jarri gaituta beharko luketela uste baduzu.", + "removecontact": "Kontaktua ezabatu", "replay": "Erantzun", "reply": "Erantzun", "reportabug": "Arazo baten berri eman", - "reportbuginfo": "E-posta botoian sakatu posta bidez arazo baten berri emateko

Ez ahaztu postaren gorputzean arazoaren xehetasun gehiago emateaz<\/b>

Oharra: arazketa informazioa atxikitu egingo da (informazio pribaturik gabe)", + "reportbuginfo": "Arazo baten berri eman botoian sakatu arazo baten berri emateko.", + "reportbugurl": "https:\/\/docs.moodle.org\/en\/Moodle_Mobile#How_to_report_a_bug", "requiredfields": "Beharrekoak diren eremu guztiak bete behar dira", "reset": "Berrezarri", "resetapp": "Aplikazioa berrabiarazi", @@ -188,7 +221,7 @@ "settings": "Ezarpenak", "showall": "Erakutsi guztiak", "showlog": "Erakutsi agerraldia", - "showmore": "Erakutsi gehiago...", + "showmore": "Erakutsi gehiago", "siteexists": "Gune hau existitzen da jada.", "sitefiles": "Guneko fitxategiak", "siteinmaintenance": "Zure gunea mantenu-moduan dago", @@ -200,12 +233,14 @@ "spaceusage": "Lekuaren erabilera", "stop": "Gelditu", "strings": "Kateka", + "submissions": "Bidalketak", "synchronization": "Sinkronizazioa", "syncthistasknow": "Ataza hau orain sinkronizatu", "system": "Sistema", "takephoto": "Atera argazkia", "takepicture": "Kamera", "taskqueue": "Ataza ilara", + "therearentmessagesyet": "Ez dago mezurik", "therearentnotificationsyet": "Ez dago jakinarazpenik", "threemonthsmore": "Erakutsi beste 3 hilabete", "timecreated": "Data gehituta", @@ -215,10 +250,13 @@ "total": "Denera", "totalusage": "Erabilera guztira", "type": "Mota", + "unblockcontact": "Desblokeatu kontaktua", "unexpectederror": "Ezusteko errorea. Mesedez aplikazioa itxi eta berriz ireki eta saiatu berriro", "update": "Eguneratu", "updatesite": "Gunea eguneratu", "upload": "Igo", + "uploadfile": "Fitxategia igo", + "uploadfileinstructions": "Fitxategi bat igotzeko, azpiko botoia sakatu eta aukeratu igo nahi duzun fitxategia.", "uploading": "Igotzen", "uploadingtoprivatefiles": "Zure fitxategi pribatuen gunera igotzen", "uselocalmobileplugin": "Orri hau hobeto dabil Moodle guneak aukerazko Mobile plugina instalaturik badago", @@ -229,8 +267,9 @@ "video": "Bideoa", "videofilenameprefix": "iphone_igoera-video", "videostored": "Zure bideoa zure gune pribatuan gorde da", - "view": "Ikusi", + "view": "Ikuspegia", "viewableonthisapp": "Ikusgai aplikazio honetan", + "viewsubmission": "Ikusi bidalketa", "warning": "Abisua", "webservicesnotenabled": "Web zerbitzuak gaitu gabe daude zure gunean. Mesedez zure Moodle gunearen administratzailearen harremanetan jarri zaitez mobile sarbidea gaitu behar dela uste baduzu.", "webservicesuccessfullyexecuted": "Web Zerbitzua ondo exekutatu da", diff --git a/lang/fa.json b/lang/fa.json index c574a9c00..e9ffe5c9b 100644 --- a/lang/fa.json +++ b/lang/fa.json @@ -4,10 +4,11 @@ "add": "افزودن", "addcontact": "افزودن مخاطب", "addedtoqueue": "درحالت آفلاین هستید.درخواست شما به صف عملیات افزوده شد", - "addfakenotifications": "", + "addfakenotifications": "افزودن هشدار فرضی", "addnote": "افزودن یادداشت", "address": "آدرس", "addsite": "افزودن سایت", + "addsubmission": "اضافه کردن تکلیف", "allcachesinvalidated": "همه کشها نامعتبرند", "allcachespurged": "همه کشها پاکسازی شد", "areyousurereset": "آیا مایل به تنظیم مجدد برنامه هستیید؟", @@ -15,7 +16,10 @@ "audiorecordinstructions": "دکمه ضبط برای شروع رکورد صدا و دکمه توقف را برای آپلود به سایت بزنید", "authenticating": "بررسی مجوز", "author": "مولف", + "average": "میانگین", "back": "بازگشت", + "blockcontact": "مسدود کردن مخاطب", + "blockedusers": "مسدود کردن کاربران ({$a})", "browsephotoalbums": "آلبوم تصاویر", "cacheexpirationtime": "زمان اعتبار کشها (miliseconds)", "cancel": "انصراف", @@ -23,6 +27,7 @@ "cannotconnect": "امکان اتصال به سایت وکودندارد.نشانی سایت و اطلاعات ورود را بررسی کنید", "cannotconnectssl": "امکان اتصال به سایت وکودندارد.نشانی سایت و اطلاعات ورود را بررسی کنید.SSL mode", "cannotsendmessage": "شبکه در دسترس نیست.پیام شما به صف عملیات افزوده شد تا مجددا ارسال کنید", + "choosefile": "انتخاب یک فایل", "city": "شهر", "close": "بستن", "completed": "تکمیل شد", @@ -30,6 +35,7 @@ "confirmdeletetask": "آیا این عملیات حذف گردد؟", "contact": "مخاطب", "contactadd": "مخاطب به فهرست تلفن همراه شما افزوده شد", + "contacts": "مخاطبین", "content": "محتوی", "contents": "محتوی", "contentyetnotavailable": "این نوع فعالیت در تلفن همراه پشتیبانی نمیشود", @@ -37,7 +43,7 @@ "country": "کشور", "course": "درس", "coursename": "نام درس", - "csssynced": "css همسان شد", + "csssynced": "css بهنگام شد", "date": "تاریخ", "days": "روز", "delete": "حذف", @@ -48,18 +54,21 @@ "details": "جزئیات", "development": "توسعه", "deviceinfo": "اطلاعات دستگاه", + "disabled": "پیام رسانی در این سامانه غیر فعال شده است.", "disablenotifications": "غیرفعالسازی هشدارها", "disablerdebugger": "غیرفعالسازی اشکالزدایی", - "discussions": "مباحثات", + "discussions": "مباحثه‌ها", "docsurl": "http:\/\/docs.moodle.com", "downloadremotefile": "دانلود فایل", "downloadtime": "دانلود شده", + "duedate": "مهلت تحویل", + "duedateno": "بدون موعد", "email": "ایمیل", "empty": "خالی", "enableautosync": "فعالسازی هماهنگسازی خودکار", - "enableautosynccss": "هماهنگسازی CSS", - "enableautosynclang": "هماهنگسازی فایلهای زبان", - "enableautosyncws": "هماهنگسازی محتوی وفایلها", + "enableautosynccss": "بهنگام سازی CSS", + "enableautosynclang": "بهنگام سازی فایلهای زبان", + "enableautosyncws": "بهنگام سازی محتوا وفایلها", "enablecss3transitions": "فعالسازی css3", "enabledebugging": "فعالسازی اشکالزدایی", "enablenotifications": "فعالسازی هشدارها", @@ -82,6 +91,7 @@ "estimatedfreespace": "فضای آزاد تخمینی", "events": "رخدادهای تقویم", "feedback": "بازخورد", + "file": "فایل", "filedownloaded": "فایل دانلود شد", "filename": "نام فایل", "filesize": "اندازه", @@ -90,6 +100,8 @@ "forcecsssync": "اجبار به هماهنگسازی css", "forcelangsync": "اجباربه هماهنگسازی زبان", "forceofflinemode": "اجبار به حالت آفلاین", + "forumnodiscussionsyet": "هیچ مباحثه ای در این تالار یافت نشد", + "forumnumreplies": "پاسخ‌ها", "fullname": "نام کامل", "general": "عمومی", "grade": "نمره", @@ -107,9 +119,10 @@ "invalidscheme": "لطفا نشانی سایت را صحیح وارد نمایید", "invalidsite": "نشانی سایت معتبر نیست", "itemname": "نام مورد", + "keepsynchronising": "پست‌های ارسالی همواره با سرور هماهنگ شوند", "langsynced": "زبان همسان شد", "language": "زبان", - "license": "License", + "license": "اجازه‌نامه", "loadcordovaemulator": "Load Cordova emulator", "loading": "بارگذاری", "localpath": "مسیر محلی", @@ -124,15 +137,16 @@ "minutes": "دقیقه", "mobileservicesnotenabled": "سرویس دسترسی موبایل در سایت شما فعال نیست", "modulename": "نام ماژول", - "months": "ماه‌ها", + "months": "ماه", "moodlehelp": "راهنما", "mycourses": "درسهای من", "myfiles": "فایلهای من", "name": "نام", "networkerror": "شبکه در دسترس نیت", "networkerrormsg": "شبکه قابل دسترسی نیست", - "next": "ادامه", + "next": "بعدی", "no": "خیر", + "nomessagesfound": "هیچ پیغامی پیدا نشد", "norefreshdisconnected": "بهنگام سازی نیازمند اتصال به شبکه است", "notaskstobesynchronized": "هیچ عملیاتی برای هماهنگسازی وجود ندارد", "noteadded": "یادداشت افزوده شد", @@ -142,8 +156,11 @@ "notificationsdisabled": "هشدارها غیر فعال شدند", "notificationsenabled": "سیستم هشدار برای سایت فعال است", "notificationshowtoenable": "سیستم هشدار فعال است", + "nousersfound": "کاربری پیدا نشد", + "offlinecontacts": "مخاطبین آفلاین ({$a})", "offlinemode": "حالت آفلاین", "ok": "موافق", + "onlinecontacts": "مخاطبین آنلاین ({$a})", "participants": "شرکت کنندگان", "password": "گذرواژه", "passwordlabel": "گذرواژه", @@ -152,6 +169,7 @@ "percentage": "درصد", "phone1": "تلفن", "phone2": "همراه", + "pluginname": "عبارت‌های ترجمه زبان در نسخه موبایل مودل", "preview": "پیش نمایش", "previous": "قبلی", "privatefiles": "فایلهای خصوصی", @@ -162,6 +180,7 @@ "recordaudio": "صوت", "recordstored": "فایل ضبط شده در فایلهای خصوصی شما آپلود خواهد شد", "remotesystemnotconfiguredfornotifications": "سایت شما از برنامه موبایل پشتیبانی نمیکند", + "removecontact": "حذف کردن مخاطب", "replay": "پاسخ", "reply": "پاسخ", "reportabug": "گزارش خطا", @@ -193,6 +212,7 @@ "spaceusage": "فضای مورد استفاده", "stop": "توقف", "strings": "رشته ها", + "submissions": "تکالیف تحویل داده شده", "synchronization": "هماهنگسازی", "syncthistasknow": "هماهنگسازی عملیات", "system": "سیستم", @@ -208,6 +228,7 @@ "total": "مجموع", "totalusage": "مجموع استفاده", "type": "نوع", + "unblockcontact": "خارج کردن مخاطب از حالت مسدود", "unexpectederror": "خطای غیرمنتظره.لطفا برنامه را ببندید و دوباره اجرا نمایید", "update": "بروزرسانی", "updatesite": "بروز رسانی اطلاعات سایت", diff --git a/lang/fr.json b/lang/fr.json index 41fb6b671..932f715ed 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -8,8 +8,10 @@ "addnote": "Ajouter une note", "address": "Adresse", "addsite": "Ajouter un site", + "addsubmission": "Ajouter un travail", "allcachesinvalidated": "Tous les caches supprimés", "allcachespurged": "Tous les caches vidés", + "allowsubmissionsfromdate": "Autoriser la remise dès le", "areyousurereset": "Voulez-vous vraiment réinitialiser l'application ? Tous vos sites seront supprimés.", "audionotavailable": "Matériel d'enregistrement audio non disponible", "audiorecordinstructions": "Appuyez Enregistrer pour commencer l'enregistrement, Stop pour arrêter et envoyer le fichier.", @@ -17,6 +19,8 @@ "author": "Auteur", "average": "Moyenne", "back": "Retour", + "blockcontact": "Bloquer le contact", + "blockedusers": "Utilisateurs bloqués ({$a})", "browsephotoalbums": "Albums photos", "cacheexpirationtime": "Durée d'échéance du cache (ms)", "cancel": "Annuler", @@ -24,21 +28,28 @@ "cannotconnect": "Connexion impossible : vérifiez que l'URL a été saisie correctement et que votre site utilise Moodle 2.4 ou ultérieur.", "cannotconnectssl": "Connexion impossible : vérifiez que l'URL a été saisie correctement, que votre site utilise Moodle 2.4 ou ultérieur et que le certificat SSL est valable.", "cannotsendmessage": "Réseau inatteignable. Votre message a été enregistré dans la file d'attente ; essayez de l'envoyer à nouveau quand vous serez en ligne.", + "chooseaccountuploadfile": "Sélectionnez un compte vers lequel déposer le fichier", + "choosefile": "Sélectionnez un fichier", "city": "Ville", "close": "Fermer", "completed": "Terminé", "confirmcontinuedownload": "Voulez-vous vraiment poursuivre le téléchargement du fichier ?", "confirmdeletetask": "Voulez-vous vraiment supprimer cette tâche ?", + "confirmuploadfile": "Vous allez déposer {$a}. Voulez-vous vraiment continuer ?", + "confirmuploadfiletosite": "Voulez-vous vraiment déposer ce fichier sur le site {$a} ?", "contact": "Contact", "contactadd": "Contact ajouté aux contacts de votre appareil", + "contacts": "Contacts", "content": "Contenu", "contents": "Contenus", "contentyetnotavailable": "Ce type d'activité n'est pas encore disponible avec l'app mobile", "continue": "Continuer", + "contributiontocoursetotal": "Contribution au total du cours", "country": "Pays", "course": "Cours", "coursename": "Nom du cours", "csssynced": "CSS distante synchronisée", + "cutoffdate": "Date limite", "date": "Date", "days": "Jours", "delete": "Supprimer", @@ -49,24 +60,30 @@ "details": "Détails", "development": "Développement", "deviceinfo": "Info appareil", + "disabled": "Désactivé", + "disablenotificationforevent": "Désactiver les notifications pour cet événement", "disablenotifications": "Désactiver les notifications", "disablerdebugger": "Désactiver le débogage à distance", - "discussions": "Discussions", + "discussions": "discussions", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Télécharger fichier", "downloadtime": "Téléchargé", + "duedate": "À remettre jusqu'au", + "duedateno": "Pas de date de retour", "email": "Courriel", "empty": "vide", "enableautosync": "Activer synchronisation automatique", - "enableautosynccss": "Activer synchronisation de CSS additionnelles", - "enableautosynclang": "Activer synchronisation des fichiers de langue", - "enableautosyncws": "Activer synchronisation des opérations et données", + "enableautosynccss": "Synchronisation de CSS additionnelles", + "enableautosynclang": "Synchronisation des fichiers de langue", + "enableautosyncws": "Synchronisation des opérations et données", "enablecss3transitions": "Activer les transitions CSS3", "enabledebugging": "Activer débogage", + "enableeventnotifications": "Activer les notifications d'événement", "enablenotifications": "Activer notifications", "enablenotificationscheck": "

Veuillez d'abord vérifier que votre site Moodle supporte les notifications mobiles (Administration > Réglages de mon profil > Messagerie personnelle). Si c'est le cas, un réglage « Notifications mobiles » sera affiché.<\/p>", "enablenotificationswarning": "

Pour l'activation des notifications, nous devons stocker dans le site Moodle des informations telles que le modèle de votre appareil mobile et son système d'exploitation.<\/p>", "enablerdebugger": "Activer débogage à distance", + "enablesyncwifi": "Permettre la synchronisation en Wi-Fi seulement", "error": "Erreur", "errorcamera": "Erreur pour accéder à l'appareil photo", "errorcameramsg": "L'appareil n'a pas d'appareil photo", @@ -77,20 +94,27 @@ "errorduringdevicetokenrequesttoapns": "Erreur lors de la requête du jeton à APNS", "errorlistingfiles": "Erreur lors de la récupération des fichiers de ce dossier", "errornoconnectednocache": "Cet appareil n'est pas connecté et aucune information n'est disponible en cache pour l'option demandée", + "errorreadingfile": "Erreur de lecture du fichier « {$a} »", + "errorreceivefilenosites": "Aucun site enregistré. Veuillez ajouter un site avant de déposer un fichier.", "errorregisteringdeviceinmoodle": "Erreur d'enregistrement de l'appareil dans Moodle", "errorretrievinggradeinformation": "Erreur lors de la lecture des information de note", "erroruploading": "Erreur d'envoi de fichier", "estimatedfreespace": "Espace libre estimé", "events": "Événements", "feedback": "Feedback", + "file": "Fichier", "filedownloaded": "Fichier téléchargé", "filename": "Nom de fichier", "filesize": "Taille", "fileuploaded": "Fichier envoyé", + "fileuploadedwithname": "Fichier déposé sous le nom {$a}.", "fileurl": "URL du fichier", "forcecsssync": "Forcer la synchronisation CSS maintenant", "forcelangsync": "Forcer la synchronisation des langues maintenant", "forceofflinemode": "Forcer mode hors ligne", + "forumnodiscussionsyet": "Il n'y a pas encore de messages dans ce forum", + "forumnumreplies": "réponses", + "frontpage": "Page d'accueil", "fullname": "Nom complet", "general": "Général", "grade": "Note", @@ -98,7 +122,7 @@ "groupeventsnotdisplayed": "Les événements de groupe ne sont pas affichés", "help": "Aide", "helpmelogin": "

Il existe plusieurs milliers de sites Moodle dans le monde. Cette app vous permet de vous connecter aux sites Moodle qui ont explicitement activé l'accès via l'app mobile.<\/p>

Si vous ne pouvez pas vous connecter à votre site Moodle, veuillez contacter son administrateur local et lui demander de lire http:\/\/docs.moodle.org\/en\/Mobile_app<\/a><\/p>

Pour tester l'app dans un Moodle de démonstration, tapez teacher<\/i> ou student<\/i> dans le champ Nom d'utilisateur<\/i> et tapoter le bouton Ajouter<\/b>.<\/p>", - "hours": "heures", + "hours": "Heures", "icantlogin": "Je ne peux pas me connecter", "imagestored": "Votre image a été enregistrée dans votre zone privée", "info": "Info", @@ -107,7 +131,7 @@ "invalidmoodleversion": "Version de Moodle non valide. La version minimale requise est :", "invalidscheme": "Veuillez indiquer une URL valide.", "invalidsite": "Cette URL n'est pas valide.", - "itemname": "Nom élément", + "itemname": "Élément d'évaluation", "langsynced": "Langue sychronisée", "language": "Langue", "lettergrade": "Note lettre", @@ -121,9 +145,9 @@ "lostconnection": "Connexion perdue. Vous devez vous reconnecter. Votre jeton n'est plus valide", "manageaccounts": "Gérer les comptes", "message": "Message", - "messages": "Messages personnels", + "messages": "Messages", "messagesent": "Message envoyé", - "minutes": "minutes", + "minutes": "Minutes", "mobileservicesnotenabled": "Les Services Moodle ne sont pas activés sur votre site. Veuillez contacter l'administrateur de votre site si vous pensez qu'ils devraient être activés.", "modulename": "Nom du module", "months": "Mois", @@ -133,8 +157,10 @@ "name": "Nom", "networkerror": "Réseau inatteignable", "networkerrormsg": "Réseau désactivé ou en panne.", - "next": "Continuer", + "next": "Suivant", "no": "Non", + "noevents": "Il n'y a pas d'événement", + "nomessagesfound": "Aucun message trouvé", "norefreshdisconnected": "L'option d'actualisation requiert une connexion réseau", "notaskstobesynchronized": "Aucune tâche à synchroniser", "noteadded": "Note ajoutée", @@ -144,8 +170,14 @@ "notificationsdisabled": "Notifications désactivées", "notificationsenabled": "Notifications activées pour tous vos sites Moodle", "notificationshowtoenable": "", + "nousersfound": "Aucun utilisateur trouvé", + "offlinecontacts": "Contact hors ligne ({$a})", "offlinemode": "Mode hors ligne", "ok": "OK", + "onlinecontacts": "Contact en ligne ({$a})", + "openinbrowser": "Ouvrir dans le navigateur", + "others": "Autres", + "participant": "Participant", "participants": "Participants", "password": "Mot de passe", "passwordlabel": "Mot de passe", @@ -162,20 +194,23 @@ "range": "Intervalle", "rank": "Rang", "rdebuggingenabledfor": "Le débogage à distance sera activé pendant cette durée (en secondes) :", + "readingfile": "Lecture du fichier", "record": "Enregistrer", "recordaudio": "Audio", "recordstored": "Votre séquence audio a été enregistrée dans votre zone privée", "remotesystemnotconfiguredfornotifications": "Cette installation Moodle ne peut pas envoyer de notifications mobiles. Veuillez contacter l'administrateur de votre Moodle pour activer ces notifications.", + "removecontact": "Supprimer contact", "replay": "Rejouer", "reply": "Répondre", "reportabug": "Signaler un bogue", - "reportbuginfo": "Tapotez le bouton courriel pour envoyer un rapport de bogue par courriel.

N'oubliez pas de fournir une description détaillée du problème dans le message.<\/b>

Certaines informations de débogage seront également envoyées, ne contenant aucune donnée personnelle.", + "reportbuginfo": "Tapotez le bouton rapport de bogue pour des instructions.", + "reportbugurl": "https:\/\/docs.moodle.org\/en\/Moodle_Mobile#How_to_report_a_bug", "requiredfields": "Tous les champs requis doivent être renseignés.", "reset": "Réinitialiser", "resetapp": "Réinitialiser l'application", "save": "Enregistrer", "saving": "Enregistrement...", - "seconds": "secondes", + "seconds": "Secondes", "select": "Sélectionner", "selectsite": "Sélectionner un site", "send": "Envoyer", @@ -185,7 +220,7 @@ "settings": "Réglages", "showall": "Tout afficher", "showlog": "Afficher l'historique", - "showmore": "Afficher plus...", + "showmore": "Plus", "siteexists": "Ce site existe déjà.", "sitefiles": "Fichiers du site", "siteinmaintenance": "Votre site est en mode de maintenance", @@ -197,6 +232,7 @@ "spaceusage": "Espace utilisé", "stop": "Stop", "strings": "Chaînes", + "submissions": "Devoirs rendus", "synchronization": "Synchronisation", "syncthistasknow": "Synchroniser cette tâche", "system": "Système", @@ -212,10 +248,13 @@ "total": "Total", "totalusage": "Usage total", "type": "Type", + "unblockcontact": "Débloquer contact", "unexpectederror": "Erreur inattendue. Veuillez fermer et rouvrir l'app pour continuer", "update": "Mettre à jour", "updatesite": "Mettre à jour le site", "upload": "Envoyer", + "uploadfile": "Déposer fichier", + "uploadfileinstructions": "Pour déposer un fichier, tapotez le bouton et sélectionnez le fichier à déposer.", "uploading": "Envoi", "uploadingtoprivatefiles": "Envoi vers votre zone privée", "uselocalmobileplugin": "Cette page fonctionne mieux si le plugin additionnel Mobile est installé sur le site Moodle", @@ -226,16 +265,17 @@ "video": "Vidéo", "videofilenameprefix": "iphone_upload-video", "videostored": "La séquence vidéo a été enregistrée dans votre zone privée", - "view": "Affichage", + "view": "Consulter", "viewableonthisapp": "Jouable avec cette app", + "viewsubmission": "Afficher le travail remis", "warning": "Avertissement", "webservicesnotenabled": "Les Services web ne sont pas activés sur votre site. Veuillez contacter l'administrateur de votre site si vous pensez qu'ils devraient être activés.", "webservicesuccessfullyexecuted": "Service web lancé correctement", "website": "Site web", - "weight": "coefficient", + "weight": "Poids", "welcome": "Bienvenue dans l'app mobile Moodle", "writeherethebug": "Indiquez ici une description détaillée du problème", - "years": "années", + "years": "Années", "yes": "Oui", "youarein": "Vous êtes dans :", "yourpassword": "mot de passe", diff --git a/lang/he.json b/lang/he.json index c5ce8baeb..a030c1b20 100644 --- a/lang/he.json +++ b/lang/he.json @@ -8,8 +8,10 @@ "addnote": "הוסף הערה", "address": "כתובת", "addsite": "הוסף אתר", + "addsubmission": "הוספת הגשה", "allcachesinvalidated": "כל זכרונות המטמון אינם תקפים", "allcachespurged": "כל זכרונות המטמון נוקו", + "allowsubmissionsfromdate": "אפשר הגשות מ", "areyousurereset": "האם אתה בטוח שברצונך לאתחל את האפליקציה? כל האתרים השמורים ימחקו.", "audionotavailable": "לא נמצאה חומרת כניסה לאודיו", "audiorecordinstructions": "בכדי להתחיל את הקלטת האודיו יש ללחוץ על הקלטה, בכדי לעצור ולהעלות את הקובץ יש ללחוץ על עצור.", @@ -17,6 +19,8 @@ "author": "יוצר", "average": "ממוצע", "back": "אחורה", + "blockcontact": "חסום את איש הקשר.", + "blockedusers": "משתמשים חסומים ({$a})", "browsephotoalbums": "אלבום תמונות", "cacheexpirationtime": "זמן תפוגה לזיכרון מטמון (באלפיות השניה)", "cancel": "ביטול", @@ -24,6 +28,7 @@ "cannotconnect": "אין אפשרות להתחבר: אנא ודא כי הזנת נכון את כתובת האתר ושהאתר הוא בגרסה 2.4 ומעלה.", "cannotconnectssl": "אין אפשרות להתחבר: אנא ודא כי הזנת נכון את כתובת האתר, שהאתר הוא בגרסה 2.4 ומעלה ושאישור ה SSL תקין ובתוקף.", "cannotsendmessage": "לא קיימת רשת זמינה. ההודעה שלך נשמרה ברשימת המשימות. באפשרותך לשלוח אותה שוב לאחר חיבור לרשת.", + "choosefile": "בחירת קובץ", "city": "עיר", "close": "סגור", "completed": "הושלם", @@ -31,6 +36,7 @@ "confirmdeletetask": "האם אתה בטוח שברצונך למחוק משימה זו?", "contact": "צור קשר", "contactadd": "איש הקשר נוסף לרשימת אנשי הקשר במכשירך", + "contacts": "אנשי קשר", "content": "תוכן", "contents": "תוכן", "contentyetnotavailable": "פעילות זו עדיין לא זמינה באפליקציה.", @@ -39,6 +45,7 @@ "course": "קורס", "coursename": "שם קורס", "csssynced": "סינכרון CSS מרחוק הושלם", + "cutoffdate": "מועד הגשה סופי", "date": "תאריך", "days": "ימים", "delete": "מחק", @@ -49,12 +56,15 @@ "details": "פרטים", "development": "פיתוח", "deviceinfo": "מידע על המכשיר", + "disabled": "שליחת מסרים לא זמינה במערכת זו", "disablenotifications": "בטל התראות", "disablerdebugger": "בטל ניפוי שגיאות מרחוק", "discussions": "דיונים", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "הורד קובץ רחוק", "downloadtime": "הורד בהצלחה", + "duedate": "עד לתאריך", + "duedateno": "אין תאריך הגשה", "email": "דואר אלקטרוני", "empty": "ריק", "enableautosync": "הפעל סינכרון אוטומטי", @@ -77,12 +87,14 @@ "errorduringdevicetokenrequesttoapns": "שגיאה בעת בקשת אסימון ל APNS", "errorlistingfiles": "שגיאה במציאה או הצגת מידע מספריה זו", "errornoconnectednocache": "המכשיר אינו מחובר ואין זיכרון מטמון זמין לפעולה הנדרשת", + "errorreadingfile": "שגיאה בקריאת קובץ \"{$a}\"", "errorregisteringdeviceinmoodle": "שגיאה ברישום המכשיר במוודל", "errorretrievinggradeinformation": "שגיאה באחזור מידע הציון", "erroruploading": "שגיאה בהעלאת הקובץ", "estimatedfreespace": "אומדן מקום פנוי", "events": "אירועי לוח שנה", "feedback": "משוב", + "file": "קובץ", "filedownloaded": "הקובץ הורד", "filename": "שם הקובץ", "filesize": "גודל", @@ -135,6 +147,7 @@ "networkerrormsg": "הרשת לא מופעלת או לא עובדת.", "next": "המשך", "no": "לא", + "nomessagesfound": "לא נמצאו מסרים", "norefreshdisconnected": "פעולת הרענון דורשת חיבור לרשת.", "notaskstobesynchronized": "אין משימות לסינכרון", "noteadded": "הערה נוספה", @@ -143,8 +156,13 @@ "notifications": "התראות", "notificationsdisabled": "ההתראות מנוטרלות", "notificationsenabled": "ההתראות מאופשרות בכל האתרים שלך", + "nousersfound": "לתשומת-לב", + "offlinecontacts": "אנשי קשר לא מקוונים ({$a})", "offlinemode": "מצב לא מקוון", "ok": "OK", + "onlinecontacts": "אנשי קשר מקוונים ({$a})", + "others": "אחרים", + "participant": "משתתף", "participants": "משתתפים", "password": "סיסמה", "passwordlabel": "סיסמה", @@ -165,6 +183,7 @@ "recordaudio": "אודיו", "recordstored": "הקלטתך נשמרה באזור הפרטי שלך.", "remotesystemnotconfiguredfornotifications": "ההתקנה של המוודל אינה מוגדרת לשליחת התראות למובייל. אנא פנה למנהל האתר באם רצונך לשנות זאת.", + "removecontact": "הסרת איש הקשר", "replay": "נגן מחדש", "reply": "השב", "reportabug": "דווח על באג", @@ -196,6 +215,7 @@ "spaceusage": "זיכרון בשימוש", "stop": "עצור", "strings": "מחרוזות", + "submissions": "הגשות", "synchronization": "סינכרון", "syncthistasknow": "סנכן משימה זו עכשיו", "system": "מערכת", @@ -211,10 +231,12 @@ "total": "סך הכל", "totalusage": "סך השימוש", "type": "סוג", + "unblockcontact": "ביטול חסימת איש הקשר", "unexpectederror": "שגיאה לא ידועה. אנא סגור ופתח את האפליקציה מחדש ונסה שוב", "update": "עדכן", "updatesite": "עדכן את האתר", "upload": "העלה קובץ", + "uploadfile": "העלאת קובץ", "uploading": "מעלה קבצים", "uploadingtoprivatefiles": "מעלה קבצים לאזור הקבצים הפרטיים שלך.", "uselocalmobileplugin": "עמוד זה עובד טוב יותר אם באתר המוודל מותקן תוסף תוכנה מובייל.", @@ -227,6 +249,7 @@ "videostored": "צילום הוידאו נשמר באזור הפרטי שלך", "view": "תצוגה", "viewableonthisapp": "ניתן לצפיה באפליקציה זו", + "viewsubmission": "צפיה בהגשה", "warning": "אזהרה", "webservicesnotenabled": "Web Services לא מאופשרים באתר זה. אנא פנה למנהל האתר באם רצונך לשנות זאת", "webservicesuccessfullyexecuted": "Web Service בוצע בהצלחה", diff --git a/lang/hu.json b/lang/hu.json index 52ab765e6..b18cacd40 100644 --- a/lang/hu.json +++ b/lang/hu.json @@ -8,8 +8,10 @@ "addnote": "Megjegyzés hozzáadása", "address": "Cím", "addsite": "Portál hozzáadása", + "addsubmission": "Leadott munka hozzáadása", "allcachesinvalidated": "MInden gyorsítótár érvénytelenné vált", "allcachespurged": "MInden gyorsítótár ürítve", + "allowsubmissionsfromdate": "Leadások engedélyezése ekkortól", "areyousurereset": "Biztosan nullázza az alkalmazást? Az összes portál törtlődni fog.", "audionotavailable": "Nincs bemeneti hangeszköz", "audiorecordinstructions": "Rögzítéshez nyomja meg a Record gombot. A Stop megnyomásával lezárja és feltölti a fájlt.", @@ -17,6 +19,8 @@ "author": "Szerző", "average": "Átlag", "back": "Vissza", + "blockcontact": "Kapcsolat zárolása", + "blockedusers": "Kizárt felhasználók ({$a})", "browsephotoalbums": "Fotóalbumok", "cacheexpirationtime": "Gyorsítótár lejárata (ms)", "cancel": "Mégse", @@ -24,6 +28,7 @@ "cannotconnect": "Sikertelen kapcsolódás: ellenőrizze, jó-e az URL és a portál legalább 2.4-es Moodle-t használ-e.", "cannotconnectssl": "Sikertelen kapcsolódás: ellenőrizze, jó-e az URL, a portál legalább 2.4-es Moodle-t használ-e, és az SSL-tanúsítvány érvényes-e.", "cannotsendmessage": "A hálózat nem elérhető. Üzenete a feladatsorba került; ha online lesz, újraküldheti.", + "choosefile": "Válasszon állományt", "city": "Város", "close": "Bezárás", "completed": "Kész", @@ -31,6 +36,7 @@ "confirmdeletetask": "Biztosan törölni kívánja ezt a feladatot?", "contact": "Kapcsolat", "contactadd": "Kapcsolat telefonos kapcsolataihoz hozzáadva.", + "contacts": "Kapcsolatok", "content": "Tartalom", "contents": "Tartalomjegyzék", "contentyetnotavailable": "A tevékenység mobil alkalmazáson keresztül még nem elérhető.", @@ -39,6 +45,7 @@ "course": "Kurzus", "coursename": "A kurzus neve", "csssynced": "Távoli CSS szinkronizálva", + "cutoffdate": "Lezárás időpontja", "date": "Dátum", "days": "nap", "delete": "Törlés", @@ -49,12 +56,15 @@ "details": "Részletek", "development": "Fejlesztés", "deviceinfo": "Eszközinfó", + "disabled": "Ezen a portálon az üzenetküldés ki van kapcsolva", "disablenotifications": "Az értesítések letiltása", "disablerdebugger": "Távoli hibakeresés kikapcsolása", "discussions": "Viták", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Távoli fájl letöltése", "downloadtime": "Letöltve", + "duedate": "Határidő", + "duedateno": "Nincs határidő", "email": "E-mail", "empty": "üres", "enableautosync": "Automatikus szinkronizálás bekapcsolása", @@ -77,12 +87,14 @@ "errorduringdevicetokenrequesttoapns": "Hiba az eszközjel APNS-kérése közben", "errorlistingfiles": "Nem sikerült elérni a mappa tartalmát", "errornoconnectednocache": "Az eszköznek nincs internetkapcsolata, és a helyi átmeneti tárolóban sincs információ a kért művelet végrehajtásához", + "errorreadingfile": "Hiba a(z) \"{$a}\" állomány olvasása közben", "errorregisteringdeviceinmoodle": "Hiba az eszköz regisztrálása közben", "errorretrievinggradeinformation": "Nem sikerült az osztályzatok lekérése", "erroruploading": "Hiba a fájl feltöltése közben", "estimatedfreespace": "Becsült szabad tárhely", "events": "Naptári bejegyzések", "feedback": "Visszajelzés", + "file": "Állomány", "filedownloaded": "Az állomány letöltése sikerült", "filename": "Fájlnév", "filesize": "Méret", @@ -135,6 +147,7 @@ "networkerrormsg": "A hálózat nincs bekapcsolva vagy nem működik.", "next": "Tovább", "no": "Nem", + "nomessagesfound": "Nem találtam üzeneteket", "norefreshdisconnected": "A frissítéshez hálózati kapcsolatra van szükség", "notaskstobesynchronized": "Nincs szinkronizálandó feladat", "noteadded": "Megjegyzés hozzáadva", @@ -144,8 +157,13 @@ "notificationsdisabled": "Értesítések kikapcsolva", "notificationsenabled": "Értesítések minden Moodle-portálján bekapcsolva", "notificationshowtoenable": " ", + "nousersfound": "Nincs felhasználó", + "offlinecontacts": "Kapcsolódás nélküli ({$a}) kapcsolatok", "offlinemode": "Offline üzemmód", "ok": "Rendben", + "onlinecontacts": "Kapcsolódás közbeni ({$a}) kapcsolatok ", + "others": "Egyebek", + "participant": "Résztvevő", "participants": "Résztvevők", "password": "Jelszó", "passwordlabel": "Jelszó", @@ -166,6 +184,7 @@ "recordaudio": "Hang", "recordstored": "Hangrögzítését magánterületén tároljuk", "remotesystemnotconfiguredfornotifications": "Portálján a mobil értesítések nincsenek engedélyezve. A mobil üzenetküldés bekapcsolásához forduljon a rendszergazdához.", + "removecontact": "Kapcsolat törlése", "replay": "Újrajátszás", "reply": "Válasz", "reportabug": "Hiba jelentése", @@ -197,6 +216,7 @@ "spaceusage": "Tárhelyhasználat", "stop": "Leállítás", "strings": "Szövegek", + "submissions": "Leadott munkák", "synchronization": "Szinkronizálás", "syncthistasknow": "Szinkronizálja a feladatot most", "system": "Rendszer", @@ -212,10 +232,12 @@ "total": "Összes", "totalusage": "Összes használat", "type": "Típus", + "unblockcontact": "Kapcsolat zárolásának feloldása", "unexpectederror": "Váratlan hiba. Zárja be és nyissa meg újból az alkalmazást.", "update": "Frissítés", "updatesite": "Portál frissítése", "upload": "Feltöltés", + "uploadfile": "Állomány feltöltése", "uploading": "Feltöltés", "uploadingtoprivatefiles": "Feltöltés magánállományai közé", "uselocalmobileplugin": "Ez az oldal jobban működik, ha a Moodle-portálon telepítik a local_mobile segédprogramot", @@ -228,6 +250,7 @@ "videostored": "Videója személyes tárterületére került.", "view": "Nézet", "viewableonthisapp": "Megtekinthető az alkalmazáson", + "viewsubmission": "Leadott munka megtekintése", "warning": "Figyelmeztetés", "webservicesnotenabled": "A webszolgáltatások nincsenek engedélyezve a portálján. A mobil elérhetőség bekapcsolásához forduljon a rendszergazdához.", "webservicesuccessfullyexecuted": "A webszolgáltatás futtatása sikerült.", diff --git a/lang/it.json b/lang/it.json index a983bb5a0..46212deea 100644 --- a/lang/it.json +++ b/lang/it.json @@ -8,8 +8,10 @@ "addnote": "Aggiungi nota", "address": "Indirizzo", "addsite": "Aggiungi sito", + "addsubmission": "Aggiungi consegna", "allcachesinvalidated": "Tutte le cache sono state invalidate", "allcachespurged": "Tutte le cache sono state svuotate", + "allowsubmissionsfromdate": "Inizio consegne", "areyousurereset": "Sei sicuro di reimpostare l'applicazione? Saranno eliminati tutti i siti.", "audionotavailable": "Microfono non disponibile", "audiorecordinstructions": "Premi Registra per avviare la registrazione, premi Stop per terminare e caricare il file.", @@ -17,6 +19,8 @@ "author": "Autore", "average": "Media", "back": "Indietro", + "blockcontact": "Blocca contatto", + "blockedusers": "Utenti bloccati ({$a})", "browsephotoalbums": "Album fotografico", "cacheexpirationtime": "Durata cache (millisecondi)", "cancel": "Annulla", @@ -24,6 +28,7 @@ "cannotconnect": "Impossibile connettersi: verificare che l'URL sia corretto e che il sito usi Moodle 2.4 o versioni successive.", "cannotconnectssl": "Impossibile connettersi: verificare che l'URL sia corretto, che il sito usi Moodle 2.4 o versioni successive e che il certificato SSL sia valido.", "cannotsendmessage": "La rete non è raggiungibile. Il messaggio è stato salvato nella coda attività. Potrai inviarlo quando sarai di nuovo online.", + "choosefile": "Scegli un file", "city": "Città", "close": "Chiudi", "completed": "Completato", @@ -31,6 +36,7 @@ "confirmdeletetask": "Sei sicuro di eliminare questa attività in coda?", "contact": "Contatto", "contactadd": "Il contatto è stato aggiunto alla rubrica", + "contacts": "Contatti", "content": "Contenuto", "contents": "Contenuti", "contentyetnotavailable": "Questo tipo di attività al momento non è disponibile per l'app mobile", @@ -40,6 +46,7 @@ "course": "Corso", "coursename": "Titolo del corso", "csssynced": "CSS remoto sincronizzato", + "cutoffdate": "Data limite", "date": "Data", "days": "Giorni", "delete": "Elimina", @@ -50,12 +57,15 @@ "details": "Dettagli", "development": "Sviluppo", "deviceinfo": "Informazioni sul dispositivo", + "disabled": "In questo sito il messaging è disabilitato", "disablenotifications": "Disabilita notifiche", "disablerdebugger": "Disabilita debugging remoto", "discussions": "discussioni", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Scarica file remoto", "downloadtime": "Scaricato", + "duedate": "Termine consegne", + "duedateno": "Senza termine consegne", "email": "Email", "empty": "vuoto", "enableautosync": "Abilita sincronizzazione automatica", @@ -78,12 +88,14 @@ "errorduringdevicetokenrequesttoapns": "Si è verificato un errore durante la richiesta del token all'APNS", "errorlistingfiles": "Si è verificato un errore durante la lettura dei file in questa cartella", "errornoconnectednocache": "Il dispositivo non è collegato e per l'operazione richiesta non sono presenti informazioni nella cache", + "errorreadingfile": "Si è verificato un errore leggendo il file \"{$a}\"", "errorregisteringdeviceinmoodle": "Si è verificato un errore durante la registrazione del dispositivo in Moodle", "errorretrievinggradeinformation": "Si è verificato un errore durante la lettura delle valutazioni", "erroruploading": "Si è verificato un errore durante il caricamento del file", "estimatedfreespace": "Spazio libero stimato", "events": "Eventi in calendario", "feedback": "Feedback", + "file": "File", "filedownloaded": "File scaricato", "filename": "Nome del file", "filesize": "Dimensione", @@ -140,6 +152,7 @@ "next": "Successivo", "no": "No", "noevents": "Non ci sono eventi", + "nomessagesfound": "Non è stato trovato nessun messaggio", "norefreshdisconnected": "Il refresh richiede una connessione di rete", "notaskstobesynchronized": "Non ci sono attività da sincronizzare", "noteadded": "Nota aggiunta", @@ -149,9 +162,14 @@ "notificationsdisabled": "Notifiche disabilitate", "notificationsenabled": "Notifiche abilitate per tutti i tuoi siti Moodle", "notificationshowtoenable": ".", + "nousersfound": "Non trovato alcun utente", + "offlinecontacts": "Contatti offline ({$a})", "offlinemode": "Modalità offline", "ok": "OK", + "onlinecontacts": "Contatti online ({$a})", "openinbrowser": "Apri nel browser", + "others": "Altri", + "participant": "Partecipante", "participants": "Partecipanti", "password": "Password", "passwordlabel": "Password", @@ -172,6 +190,7 @@ "recordaudio": "Audio", "recordstored": "La registrazione è stata memorizzata nei tuoi file personali", "remotesystemnotconfiguredfornotifications": "L'installazione Moodle non è configurata per inviare notifiche mobile. Per favore contatta l'amministratore del sito per verificare la configurazione.", + "removecontact": "Cancella contatti", "replay": "Riproduci", "reply": "Rispondi", "reportabug": "Segnala un bug", @@ -203,6 +222,7 @@ "spaceusage": "Spazio utilizzato", "stop": "Stop", "strings": "Stringhe", + "submissions": "Consegne", "synchronization": "Sincronizzazione", "syncthistasknow": "Sincronizza l'attività adesso", "system": "Sistema", @@ -219,10 +239,12 @@ "total": "Totale", "totalusage": "Utilizzo totale", "type": "Tipo", + "unblockcontact": "Sblocca contatto", "unexpectederror": "Si è verificato un errore inatteso. Riprova chiudendo e riaprendo l'applicazione", "update": "Aggiorna", "updatesite": "Aggiorna il sito", "upload": "Carica", + "uploadfile": "Carica file", "uploading": "Caricamento", "uploadingtoprivatefiles": "Caricamento nei tuoi file personali", "uselocalmobileplugin": "Questa pagina funziona meglio se è installato il plugin opzionale Mobile", @@ -235,6 +257,7 @@ "videostored": "Il video è stato memorizzato nei tuoi file privati", "view": "Visualizza", "viewableonthisapp": "Visualizzabile su questa app", + "viewsubmission": "Visualizza consegne", "warning": "Attenzione", "webservicesnotenabled": "Nel sito non sono stati abilitati i web service. Per favore contatta l'amministratore del sito per verificare la configurazione.", "webservicesuccessfullyexecuted": "Il web service è stato elaborato correttamente", diff --git a/lang/ja.json b/lang/ja.json index 3c5dd514d..085981eeb 100644 --- a/lang/ja.json +++ b/lang/ja.json @@ -8,15 +8,20 @@ "addnote": "ノートを追加", "address": "アドレス", "addsite": "サイトを追加", + "addsubmission": "提出の追加", "allcachesinvalidated": "全てのキャッシュを無効にしました", "allcachespurged": "全てのキャッシュは消去されました", + "allowsubmissionsfromdate": "フォーム提出の許可", "areyousurereset": "本当にアプリをリセットしますか? 追加したサイトの情報はすべて消去されます。", + "attempnumber": "提出回数", "audionotavailable": "音声入力装置がありません", "audiorecordinstructions": "記録を始めるには記録ボタンを、止めるには停止ボタンを押し、ファイルをアップロードします。", "authenticating": "認証中", "author": "著者", "average": "平均", "back": "戻る", + "blockcontact": "コンタクトをブロック", + "blockedusers": "ブロックしたユーザ ({$a})", "browsephotoalbums": "フォトアルバム", "cacheexpirationtime": "キャッシュ有効期限(ミリ秒単位)", "cancel": "キャンセル", @@ -24,13 +29,18 @@ "cannotconnect": "接続できません:正しいURLを入力しているか、サイトのMoodleが2.4以降であることを確認してください。", "cannotconnectssl": "接続できません:正しいURLを入力しているか、サイトのMoodleが2.4以降であること、SSL証明書が正当なものであることを確認してください。", "cannotsendmessage": "ネットワークがつながりません。メッセージはタスクキューに保存されており、オンラインになったときに再送できます。", + "chooseaccountuploadfile": "ファイルをアップロードするアカウントの選択:", + "choosefile": "ファイルの選択", "city": "市町村", "close": "閉じる", "completed": "完了", "confirmcontinuedownload": "本当にファイルのダウンロードを継続しますか?", "confirmdeletetask": "本当にこのタスクを消去しますか?", + "confirmuploadfile": "{$a}をアップロードしようとしています。続けますか?", + "confirmuploadfiletosite": "このファイルをサイト{$a}へアップロードしますか?", "contact": "コンタクト", "contactadd": "コンタクトがあなたの電話の連絡帳に追加されました。", + "contacts": "コンタクト", "content": "コンテンツ", "contents": "コンテンツ", "contentyetnotavailable": "この活動はモバイル・アプリ経由では利用できません", @@ -40,6 +50,7 @@ "course": "コース", "coursename": "コース名", "csssynced": "同期したリモートのCSS", + "cutoffdate": "最終提出期限", "date": "日付", "days": "日", "delete": "消去", @@ -50,12 +61,16 @@ "details": "詳細", "development": "開発", "deviceinfo": "デバイス情報", + "disabled": "無効", + "disablenotificationforevent": "このイベントの通知を無効にする", "disablenotifications": "通知を無効にする", "disablerdebugger": "リモートデバッグを無効にする", "discussions": "ディスカッション", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "リモートファイルのダウンロード", "downloadtime": "ダウンロード日時", + "duedate": "締切日", + "duedateno": "締切日なし", "email": "Email", "empty": "空白", "enableautosync": "自動同期を有効にする", @@ -64,36 +79,43 @@ "enableautosyncws": "操作とデータを同期する", "enablecss3transitions": "CSS3 Transitionsを有効にする", "enabledebugging": "デバッグを有効にする", + "enableeventnotifications": "イベント通知を有効にする", "enablenotifications": "通知を有効にする", "enablenotificationscheck": "

Moodleサイトがモバイル通知をサポートしているかを確認するには、まずMoodleサイトを開いて、管理 \/ マイプロファイル設定 \/ メッセージング の項目を開いてください。モバイル通知が有効ならば、モバイル通知の項目がチェックできるようになっているはずです。<\/p>", "enablenotificationswarning": "

通知を有効にするため、Moodleサイトにあなたのモバイルデバイスのモデルやオペレーティングシステム等の情報を登録する必要があります。<\/p>", "enablerdebugger": "リモートデバッグを有効にする", + "enablesyncwifi": "Wi-Fi環境でのみ同期する", "error": "エラー", "errorcamera": "カメラへのアクセスエラー", "errorcameramsg": "デバイスはカメラをサポートしていません", - "errorcapturingaudio": "音声キャプチャのエラー", + "errorcapturingaudio": "音声キャプチャーのエラー", "errorcapturingvideo": "ビデオキャプチャーのエラー", "errordownloading": "ファイルのダウンロードのエラー", "errorduringdevicetokenrequest": "デバイストークン要求中のエラー", "errorduringdevicetokenrequesttoapns": "APNSへのデバイストークン要求中のエラー", "errorlistingfiles": "このディレクトリにあるファイル取得のエラー", "errornoconnectednocache": "要求されたオプションを実行するためのデバイスが接続されておらず、キャッシュされた情報もありません", + "errorreadingfile": "ファイル\"{$a}\"の読み取りエラー", + "errorreceivefilenosites": "登録されているサイトがありません。ファイルをアップロードする前にサイトを追加してください。", "errorregisteringdeviceinmoodle": "Moodleへのデバイス登録エラー", "errorretrievinggradeinformation": "成績情報取得エラー", "erroruploading": "ファイルアップロードエラー", "estimatedfreespace": "概算の空き容量", "events": "カレンダーイベント", "feedback": "フィードバック", + "file": "ファイル", "filedownloaded": "ダウンロードしたファイル", "filename": "ファイル名", "filesize": "大きさ", "fileuploaded": "アップロードしたファイル", + "fileuploadedwithname": "ファイル名{$a}としてアップロードに成功しました。", "fileurl": "ファイルのURL", "forcecsssync": "いますぐCSS同期する", "forcelangsync": "いますぐ言語ファイルを同期する", "forceofflinemode": "オフラインモードにする", "forumnodiscussionsyet": "このフォーラムにはまだディスカッショントピックがありません", "forumnumreplies": "返信", + "frontpage": "フロントページ", "fullname": "氏名", "general": "一般", "grade": "成績", @@ -140,6 +162,7 @@ "next": "次へ", "no": "いいえ", "noevents": "イベントはありません", + "nomessagesfound": "メッセージは見つかりませんでした", "norefreshdisconnected": "リフレッシュオプションにはネットワーク接続が必要です", "notaskstobesynchronized": "同期が必要なタスクはありません", "noteadded": "ノートが追加されました", @@ -148,9 +171,14 @@ "notifications": "通知", "notificationsdisabled": "通知は無効です", "notificationsenabled": "すべてのMoodleサイトに対して通知が有効です", + "nousersfound": "ユーザは見つかりませんでした", + "offlinecontacts": "オフラインのコンタクト ({$a})", "offlinemode": "オフラインモード", "ok": "はい", + "onlinecontacts": "オフラインのコンタクト ({$a})", "openinbrowser": "ブラウザを開く", + "others": "その他", + "participant": "参加者", "participants": "参加者", "password": "パスワード", "passwordlabel": "パスワード", @@ -167,14 +195,17 @@ "range": "範囲", "rank": "ランク", "rdebuggingenabledfor": "この秒数後にリモートデバッグが有効になります:", + "readingfile": "ファイル読み取り", "record": "記録", "recordaudio": "音声", "recordstored": "記録があなたのプライベートエリアに保存されました", "remotesystemnotconfiguredfornotifications": "Moodleサイトがモバイル通知を送信するよう設定されていません。モバイル通知が必要と思うなら、あなたのMoodleサイト管理者に相談してください。", + "removecontact": "コンタクトを削除", "replay": "再生", "reply": "返信", "reportabug": "バグを報告", - "reportbuginfo": "電子メールでバグレポートを送信するにはメールボタンをタップしてください

メール本文には問題に関する詳細な説明を記述してください<\/>

デバッグ情報(個人情報を含まないもの)を添付するとよいでしょう", + "reportbuginfo": "「バグを報告」ボタンをタップして説明を表示します。", + "reportbugurl": "https:\/\/docs.moodle.org\/en\/Moodle_Mobile#How_to_report_a_bug", "requiredfields": "必須フィールドはすべて記入してください。", "reset": "リセット", "resetapp": "アプリのリセット", @@ -202,6 +233,7 @@ "spaceusage": "保存領域使用量", "stop": "停止", "strings": "文字列", + "submissions": "提出物", "synchronization": "同期", "syncthistasknow": "このタスクをいますぐ同期", "system": "システム", @@ -218,10 +250,13 @@ "total": "総計", "totalusage": "総使用量", "type": "種類", + "unblockcontact": "コンタクトのブロックを解除", "unexpectederror": "不明なエラー。アプリを閉じて再起動してみてください。", "update": "アップデート", "updatesite": "サイトをアップデート", "upload": "アップロード", + "uploadfile": "ファイルのアップロード", + "uploadfileinstructions": "ファイルをアップロードするには、下のボタンをクリックしてアップロードするファイルを選択してください。", "uploading": "アップロード中", "uploadingtoprivatefiles": "プライベートファイルエリアへアップロード", "uselocalmobileplugin": "Moodleサイトにオプションのモバイルプラグインがインストールされていればこのページはよりうまく操作できます", @@ -234,6 +269,7 @@ "videostored": "ビデオはあなたのプライベートエリアに保存されました", "view": "表示", "viewableonthisapp": "本アプリで表示可能", + "viewsubmission": "提出物を表示", "warning": "警告", "webservicesnotenabled": "あなたのサイトでWebサービスが有効になっていません。モバイルアクセスが必要と思うなら、あなたのMoodleサイト管理者に相談してください。", "webservicesuccessfullyexecuted": "Webサービスが正常に実行されました", diff --git a/lang/nl.json b/lang/nl.json index b514695bd..6b3b6a5c2 100644 --- a/lang/nl.json +++ b/lang/nl.json @@ -8,7 +8,10 @@ "addnote": "Notitie toevoegen", "address": "Adres", "addsite": "Voeg een site toe", + "addsubmission": "Inzending toevoegen", + "allcachesinvalidated": "Alle cache ongeldig gemaakt", "allcachespurged": "Alle cache leeggemaakt", + "allowsubmissionsfromdate": "Insturen toestaan vanaf", "areyousurereset": "Weet je zeker dat je de applicatie wil resetten? Al je sites zullen verwijderd worden.", "audionotavailable": "Hardware voor het opnemen van audio niet beschikbaar", "audiorecordinstructions": "Klik op Opnemen om de audio-opname te starten, Stop om te beëindigen en het bestand te uploaden.", @@ -16,6 +19,8 @@ "author": "Auteur", "average": "Gemiddelde", "back": "Terug", + "blockcontact": "Blokkeer contact", + "blockedusers": "Geblokkeerde gebruikers ({$a})", "browsephotoalbums": "Foto-albums", "cacheexpirationtime": "Cache verlooptijd (milliseconden)", "cancel": "Annuleer", @@ -23,6 +28,7 @@ "cannotconnect": "Kan niet verbinden: controleer of je de URL juist hebt ingegeven en dat je site Moodle 2.4 of recenter gebruikt.", "cannotconnectssl": "Kan niet verbinden: controleer of je de URL juist hebt ingegeven, dat je site Moodle 2.4 of recenter gebruikt en of het SSL-certificaat geldig is.", "cannotsendmessage": "Netwerk niet bereikbaar. Je bericht is bewaard in de takenwachtrij. Je kunt het opnieuw verzenden als je terug online bent.", + "choosefile": "Kies een bestand", "city": "Stad", "close": "Sluit", "completed": "Voltooid", @@ -30,14 +36,17 @@ "confirmdeletetask": "Weet je zeker dat je deze taak wenst te verwijderen?", "contact": "Contact", "contactadd": "Contact toegevoegd aan je contactenlijst van je telefoon", + "contacts": "Contacten", "content": "Inhoud", "contents": "Inhoud", "contentyetnotavailable": "Dit type activiteit is nog niet beschikbaar via de mobiele app", "continue": "Ga verder", + "contributiontocoursetotal": "Bijdrage bij het cursustotaal", "country": "Land", "course": "Cursus", "coursename": "Cursusnaam", "csssynced": "CSS gesynchroniseerd", + "cutoffdate": "Afsluitdatum", "date": "Datum", "days": "Dagen", "delete": "Verwijder", @@ -48,24 +57,28 @@ "details": "Details", "development": "Ontwikkeling", "deviceinfo": "Apparaatsinfo", + "disabled": "De berichtenservice is uitgeschakeld op deze site", "disablenotifications": "Schakel notificaties uit", "disablerdebugger": "Foutopsporing uitschakelen", "discussions": "Discussies", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Download bestand", "downloadtime": "Gedownload", + "duedate": "Uiterste inleverdatum", + "duedateno": "Geen uiterste inleverdatum", "email": "E-mail", "empty": "leeg", "enableautosync": "Autosync inschakelen", - "enableautosynccss": "Automatisch synchroniseren van bijkomend CSS-bestand inschakelen", - "enableautosynclang": "Synchronisatie van taalpakket inschakelen", - "enableautosyncws": "Synchronisatie van operaties en data inschakelen", + "enableautosynccss": "Synchronisatie van bijkomende CSS", + "enableautosynclang": "Synchronisatie van taalbestanden", + "enableautosyncws": "Synchronisatie van operaties en data", "enablecss3transitions": "CSS3-transities inschakelen", "enabledebugging": "Foutopsporing inschakelen", "enablenotifications": "Meldingen inschakelen", "enablenotificationscheck": "Je dient eerst te controleren of jouw Moodle site mobiele notificaties ondersteunt. Log in op je Moodle site en ga naar Instellingen \/ Mijn profielinstellingen \/ Berichten sturen. Wanneer mobiele notificaties zijn geactiveerd, moet je een kolom zien genaamd Mobiele notificaties.", "enablenotificationswarning": "

Om foutopsporing mogelijk te maken moeten we informatie opslaan op de moodle site, zoals het model en besturingssysteem van je mobiel toestel.", "enablerdebugger": "Foutopsporing inschakelen", + "enablesyncwifi": "Enkel synchroniseren via wifi", "error": "Fout", "errorcamera": "Fout bij toegang tot de camera", "errorcameramsg": "Dit toestel ondersteunt geen camera", @@ -76,12 +89,14 @@ "errorduringdevicetokenrequesttoapns": "Fout bij het opvragen van een toesteltoken aan APNS", "errorlistingfiles": "Fout bij het ophalen van bestanden uit deze directory", "errornoconnectednocache": "Het toestel is niet verbonden en er is geen opgeslagen informatie beschikbaar om deze optie uit te voeren", + "errorreadingfile": "Fout bij het lezen van bestand \"{$a}\"", "errorregisteringdeviceinmoodle": "Fout bij het registreren van het toestel in Moodle", "errorretrievinggradeinformation": "Fout bij ophalen cijferinformatie", "erroruploading": "Fout bij het uploaden van een bestand", "estimatedfreespace": "Geschatte vrije ruimte", "events": "Kalender gebeurtenissen", "feedback": "Feedback", + "file": "Bestand", "filedownloaded": "Bestand gedownload", "filename": "Bestandsnaam", "filesize": "Grootte", @@ -98,7 +113,7 @@ "grades": "Cijfers", "groupeventsnotdisplayed": "Groepsgebeurtenissen worden niet getoond", "help": "Help", - "helpmelogin": "

Om te kunnen aanmelden moet je er voor zorgen dat:<\/p>1. de Moodle-site versie 2.4 of hoger is.
2. de sitebeheerder mobiele toegang heeft ingeschakeld.

Om de app te testen in een Moodle demo site kun je teacher<\/i> of student<\/i> in het Gebruikersnaam<\/i>-veld typen en de op de Toevoegen<\/b>-knop klikken.<\/p>

Bezoek de Moodle documentatie-site voor meer gedetailleerde informatie en hulp.<\/a><\/p>", + "helpmelogin": "

Er zijn vele Moodle sites over de hele wereld. Deze app kan enkel verbinding maken met Moodle sites die expliciet mobiele toegang ingeschakeld hebben.<\/p>

Als je geen verbinding met jouw Moodle site kunt maken, vraag dan aan de beheerder van jouw site om http:\/\/docs.moodle.org\/en\/Mobile_app<\/a> te lezen en de toegang in te schakelen.<\/p>

Om de app te testen in een Moodle demo site kun je teacher<\/i> of student<\/i> in het Gebruikersnaam<\/i>-veld typen en de op de Toevoegen<\/b>-knop klikken.<\/p>", "hours": "Uren", "icantlogin": "Ik kan niet aanmelden", "imagestored": "Je afbeelding is opgeslagen bij je privé-bestanden", @@ -108,7 +123,7 @@ "invalidmoodleversion": "Ongeldige Moodleversie. De vereiste minimumversie is:", "invalidscheme": "Geef een geldige site-URL", "invalidsite": "Deze site-URL is niet geldig.", - "itemname": "Itemnaam", + "itemname": "Beoordelingsitem", "keepsynchronising": "Blijf berichten synchroniseren met de server", "langsynced": "Taalpakket gesynchroniseerd", "language": "Taal", @@ -137,6 +152,8 @@ "networkerrormsg": "Netwerk niet ingeschakeld of werkt niet.", "next": "Volgende", "no": "Nee", + "noevents": "Er zijn geen gebeurtenissen", + "nomessagesfound": "Er zijn geen berichten gevonden", "norefreshdisconnected": "De ververs-functie vereist een werkende netwerkverbinding", "notaskstobesynchronized": "Geen te synchroniseren taken", "noteadded": "Notitie toegevoegd", @@ -144,9 +161,16 @@ "notificationpreferencesnotconfigured": "Jouw mobiele notificaties zijn nog niet geconfigureerd. Om dit te doen, dien je via een browser in te loggen op je Moodle site en dit via Instellingen \/ Mijn profielinstellingen \/ Berichten sturen in te stellen.", "notifications": "Meldingen", "notificationsdisabled": "Meldingen uitgeschakeld", - "notificationsenabled": "Meldingen ingeschakeld", + "notificationsenabled": "Meldingen ingeschakeld voor al je Moodle sites", + "notificationshowtoenable": "", + "nousersfound": "Geen gebruikers gevonden", + "offlinecontacts": "Offline contacten ({$a})", "offlinemode": "Offline modus", "ok": "OK", + "onlinecontacts": "Online contacten ({$a})", + "openinbrowser": "Open in browser", + "others": "Andere", + "participant": "Deelnemers", "participants": "Deelnemers", "password": "Wachtwoord", "passwordlabel": "Wachtwoord", @@ -161,12 +185,13 @@ "privatefiles": "Private bestanden", "purgecaches": "Cache leegmaken", "range": "Bereik", - "rank": "Ranglijst", + "rank": "Volgorde", "rdebuggingenabledfor": "Foutopsporing zal ingeschakeld worden:", "record": "Opnemen", "recordaudio": "Audio", "recordstored": "Je opname is opgeslagen in bij je privé-bestanden", "remotesystemnotconfiguredfornotifications": "De Moodle site is niet geconfigureerd om mobiele notificaties te versturen. Neem contact op met de sitebeheerder.", + "removecontact": "Verwijder contact", "replay": "Opnieuw", "reply": "Antwoord", "reportabug": "Fout rapporteren", @@ -186,7 +211,7 @@ "settings": "Instellingen", "showall": "Toon alle", "showlog": "Toon log", - "showmore": "Toon meer...", + "showmore": "Toon meer", "siteexists": "Deze site bestaat al.", "sitefiles": "Sitebestanden", "siteinmaintenance": "Je Moodle site staat in onderhoudsmodus", @@ -198,6 +223,7 @@ "spaceusage": "Gebruikte ruimte", "stop": "Stop", "strings": "Strings", + "submissions": "Ingestuurde opdrachten", "synchronization": "Synchronisatie", "syncthistasknow": "Synchroniseer deze taak nu", "system": "Systeem", @@ -213,10 +239,12 @@ "total": "Totaal", "totalusage": "Totaal gebruikt", "type": "Type", + "unblockcontact": "deblokkeer deze contactpersoon", "unexpectederror": "Onverwachte fout. Sluit en heropen de applicatie om opnieuw te proberen.", "update": "Update", "updatesite": "Update de site", "upload": "Upload", + "uploadfile": "Upload bestand", "uploading": "Uploaden...", "uploadingtoprivatefiles": "Uploaden naar je privé-bestanden", "uselocalmobileplugin": "Deze pagina werkt beter wanneer op de Moodle site de optionele Mobiele plugin is geinstalleerd", @@ -227,13 +255,14 @@ "video": "Video", "videofilenameprefix": "iphone_upload-video", "videostored": "Jouw video is opgeslagen in je private bestanden", - "view": "Bekijken", + "view": "Bekijk", "viewableonthisapp": "Zichtbaar op deze app", + "viewsubmission": "Bekijk ingestuurde opdracht", "warning": "Waarschuwing", "webservicesnotenabled": "Web services zijn niet geactiveerd op jouw Moodle site. Neem contact op met de sitebeheerder.", "webservicesuccessfullyexecuted": "Web services zijn succesvol uitgevoerd", "website": "Website", - "weight": "weging", + "weight": "Weging", "welcome": "Welkom in de Moodle mobiele app", "writeherethebug": "Schrijf hier een gedetailleerde beschrijving van het probleem", "years": "Jaren", diff --git a/lang/pt_br.json b/lang/pt_br.json index b643f7046..0d79a0c6b 100644 --- a/lang/pt_br.json +++ b/lang/pt_br.json @@ -8,7 +8,10 @@ "addnote": "Adicionar uma anotação", "address": "Endereço", "addsite": "Adicionar um site", + "addsubmission": "Adicionar tarefa", + "allcachesinvalidated": "Todos os caches foram invalidados", "allcachespurged": "Todos os caches forma eliminados", + "allowsubmissionsfromdate": "Permite envios a partir de", "areyousurereset": "Tem certeza de que deseja redefinir o aplicativo? Todos os seus sites serão excluídos.", "audionotavailable": "Hardware de entrada de áudio não disponível", "audiorecordinstructions": "Pressione Gravar para iniciar a gravação de áudio, Stop para parar e fazer o upload do arquivo.", @@ -16,6 +19,8 @@ "author": "Autor", "average": "Média", "back": "Voltar", + "blockcontact": "Bloquear contato", + "blockedusers": "Usuários bloqueados ({$a})", "browsephotoalbums": "Álbum de fotos", "cacheexpirationtime": "Tempo de expiração do cache (milisegundos)", "cancel": "Cancelar", @@ -23,34 +28,44 @@ "cannotconnect": "Não é possível conectar-se: Verifique se digitou a URL corretamente e se seu site usa o Moodle 2.4 ou posterior.", "cannotconnectssl": "Não é possível conectar-se: Verifique se digitou a URL corretamente, se seu site usa o Moodle 2.4 ou posterior e se o certificado SSL é válido.", "cannotsendmessage": "Rede não acessível. Sua mensagem foi salva na fila de tarefas; você pode reenviá-lo assim que estiver conectado(a).", + "choosefile": "Escolha um arquivo", "city": "Cidade", "close": "Feche", "completed": "Completo", + "confirmcontinuedownload": "Tem certeza que quer continuar a baixar o arquivo?", + "confirmdeletetask": "Tem certeza que quer remover esta tarefa?", "contact": "Contato", "contactadd": "Contato adicionado à sua lista de contatos do telefone.", + "contacts": "Contatos", "content": "Conteúdo", "contents": "Conteúdos", "contentyetnotavailable": "Este tipo de atividade não está disponível pelo aplicativo do celular ainda", "continue": "Continue", + "contributiontocoursetotal": "Contribuição ao total do curso", "country": "País", "course": "Curso", "coursename": "Nome do curso", "csssynced": "CSS remoto sincronizado", + "cutoffdate": "Data limite", "date": "Data", "days": "Dias", - "delete": "Deletar", - "deletesite": "Deletar este site?", + "delete": "Remover", + "deletesite": "Remover este site?", + "deletesiteb": "Remover site", "deletesitefiles": "Tem certeza que deseja deletar os arquivos baixados a partir deste site?", "description": "Descrição", "details": "Detalhes", "development": "Desenvolvimento", "deviceinfo": "Informações do dispositivo", + "disabled": "Mensagens estão desativadas neste site", "disablenotifications": "Desabilitar notificações", "disablerdebugger": "Desativar a depuração remota", - "discussions": "Tópicos", + "discussions": "discussões", "docsurl": "http:\/\/docs.moodle.org\/pt_br\/Mobile_app", "downloadremotefile": "Baixar o arquivo remoto", "downloadtime": "Transferido", + "duedate": "Data de entrega", + "duedateno": "Nenhuma data de entrega", "email": "Email", "empty": "vazio", "enableautosync": "Ativar sincronização automática", @@ -63,16 +78,26 @@ "enablenotificationscheck": "

Você deve verificar primeiro se o seu site Moodle suporta notificações PUSH, por favor, abra o seu site Moodle e vá para Administração \/ Minhas configurações de perfil \/ Mensagens. Se notificações PUSH estão habilitados você deve ver uma coluna chamada Mobile PUSH Notifications<\/p>", "enablenotificationswarning": "

Para ativar as notificações de que precisamos para armazenar informações como o modelo do dispositivo móvel e do sistema operacional no site do Moodle. <\/p>", "enablerdebugger": "Ativar a depuração remota", + "enablesyncwifi": "Sincronizar somente se conectado ao Wi-Fi", "error": "Erro", "errorcamera": "Erro ao acessar a câmera", "errorcameramsg": "Dispositivo não suporta uma cêmera", "errorcapturingaudio": "Erro ao capturar áudio", + "errorcapturingvideo": "Erro ao capturar vídeo", + "errordownloading": "Erro ao baixar o arquivo", + "errorduringdevicetokenrequest": "Erro na requisição do token do dispositivo", "errorduringdevicetokenrequesttoapns": "Erro durante requisição de token do dispositivo ao APNS", + "errorlistingfiles": "Erro ao recuperar arquivos deste diretório", + "errornoconnectednocache": "O aparelho não está conectado e não tem as informações disponíveis para a opção solicitada", + "errorreadingfile": "Erro na leitura do arquivo \"{$a}\"", "errorregisteringdeviceinmoodle": "Erro ao registrar dispositivo ao Moodle", + "errorretrievinggradeinformation": "Erro ao buscar as notas", "erroruploading": "Erro ao enviar arquivo", "estimatedfreespace": "Espaço livre estimado", "events": "Eventos do Calendário", - "feedback": "Avaliação", + "feedback": "Feedback", + "file": "Arquivo", + "filedownloaded": "Arquivo baixado", "filename": "Nome do arquivo", "filesize": "Tamanho", "fileuploaded": "Arquivo enviado", @@ -80,13 +105,16 @@ "forcecsssync": "Forçar sincronização do CSS agora", "forcelangsync": "Forçar sincronização do idioma agora", "forceofflinemode": "Forçar modo off-line", + "forumnodiscussionsyet": "Não existem tópicos neste fórum ainda", + "forumnumreplies": "respostas", "fullname": "Nome completo", "general": "Geral", "grade": "Notas", "grades": "Notas", + "groupeventsnotdisplayed": "Eventos para grupos não são mostrados", "help": "Ajuda", - "helpmelogin": "

Para efetuar o login, por favor verifique se:<\/p>1. O site Moodle é a versão 2.4 ou superior.
2. O administrador do site Moodle permitiu o acesso móvel.

Para testar o aplicativo em um site Moodle demo, digite teacher<\/i> ou estudent<\/i> no campo Usuário<\/i> e clique no botão Adicionar<\/b>.<\/p>

Visite o site de documentação do Moodle para informações mais detalhadas e ajuda.<\/a><\/p>", - "hours": "horas", + "helpmelogin": "

Existem milhares de sites usando Moodle no mundo. Este aplicativo somente pode conectar com um Moodle se este foi especialmente configurado para permitir o acesso móvel. <\/p>\nSe não conseguir se conectar com o seu Moodle, vai precisar entrar em contato com a administradora do seu Moodle e pedir ela acessar http:\/\/docs.moodle.org\/en\/Mobile_app<\/a><\/p>\n

Para testar o aplicativo em um site Moodle demo, digite teacher<\/i> ou estudent<\/i> no campo Usuário<\/i> e clique no botão Adicionar<\/b>.<\/p>", + "hours": "Horas", "icantlogin": "Não consigo conectar", "imagestored": "Sua imagem foi guardada em sua área privada", "info": "Informações", @@ -95,38 +123,53 @@ "invalidmoodleversion": "Versão do Moodle inválida. A versão mínima requerida é:", "invalidscheme": "Por favor, forneça uma URL válida", "invalidsite": "A URL do siteé inválida.", - "itemname": "Nome do Item", + "itemname": "Item de nota", + "keepsynchronising": "Continuar sincronizando posts com o servidor", "langsynced": "Idioma sincronizado", "language": "Idioma", - "lettergrade": "Notas por letras", + "lettergrade": "Nota letra", "license": "Licença", "loadcordovaemulator": "Carregar emulador Cordova", "loading": "Carregando", "localpath": "Caminho local", "location": "Localização", + "logininsiterequired": "É preciso logar no site num navegador.", "logout": "Sair", "lostconnection": "Perdemos conexão. Você precisa se reconectar. Seu token agora está inválido.", + "manageaccounts": "Gerenciar contas", "message": "Mensagem", "messages": "Mensagens", "messagesent": "Mensagem enviada", - "minutes": "minutos", + "minutes": "Minutos", + "mobileservicesnotenabled": "Os serviços móveis não estão habilitados no seu Moodle. Por favor contate a administradora do seu Moodle se achar que o acesso móvel deveria estar habilitado", "modulename": "Nome do módulo", "months": "Meses", "moodlehelp": "Ajuda", "mycourses": "Meus cursos", - "myfiles": "Meus arquivos privados", + "myfiles": "Meus arquivos", "name": "Nome", "networkerror": "Rede não acessível", "networkerrormsg": "Rede não habilitada ou não está funcionado", - "next": "Próxima", + "next": "Próximo", "no": "Não", + "noevents": "Sem eventos", + "nomessagesfound": "Não achamos mensagens", + "norefreshdisconnected": "Atualizar requer uma conexão de rede", "notaskstobesynchronized": "Não há tarefas a serem sincronizadas", "noteadded": "Nota adicionada", + "noticelargefile": "Note que o arquivo que pediu baixar é grande e que pode demorar um pouco.", + "notificationpreferencesnotconfigured": "As suas preferências de notificação móveis não foram configuradas ainda. Entre no seu site Moodle usando um navegador e vá para as configurações de Mensagens no seu perfil.", "notifications": "Notificação", "notificationsdisabled": "Notificações estão desativadas", "notificationsenabled": "Notificações", + "nousersfound": "Nenhum usuário encontrado", + "offlinecontacts": "Contatos off-line ({$a})", "offlinemode": "Modo off-line", "ok": "OK", + "onlinecontacts": "Contatos online ({$a})", + "openinbrowser": "Abrir num navegador", + "others": "Outros", + "participant": "Participante", "participants": "Participantes", "password": "Senha", "passwordlabel": "Senha", @@ -138,14 +181,16 @@ "pluginname": "Cadeias de idiomas no Moodle Mobile", "preview": "Visualização", "previous": "Anterior", - "privatefiles": "Arquivos pessoais", + "privatefiles": "Arquivos privados", "purgecaches": "Limpar caches", - "range": "Intervalo", - "rank": "Classificação", + "range": "Range", + "rank": "Posição", "rdebuggingenabledfor": "A depuração remota será ativado durante os seguintes segundos:", "record": "Registro", "recordaudio": "Áudio", "recordstored": "Sua gravação foi armazenada em sua área privada", + "remotesystemnotconfiguredfornotifications": "A instalação deste Moodle não está configurado para enviar notificações móveis. Por favor, contate o administrador do Moodle, se você achar que notificações devem ser ativadas.", + "removecontact": "Remover contato", "replay": "Repetição", "reply": "Responder", "reportabug": "Reportar um bug", @@ -155,18 +200,20 @@ "resetapp": "Reinicie o Aplicativo", "save": "Salve", "saving": "Salvando...", - "seconds": "segundos", + "seconds": "Segundos", "select": "Selecione", "selectsite": "Selecione um site", "send": "Enviar", "sendall": "Envie tudo", "sendmessage": "Envie uma mensagem", + "sendnow": "Enviar agora", "settings": "Configurações", "showall": "Mostrar todos", "showlog": "Mostrar log", - "showmore": "Mostrar mais ...", + "showmore": "Mostrar mais", "siteexists": "Este site já existe.", "sitefiles": "Arquivos do site", + "siteinmaintenance": "O site está em modo de manutenção", "sitename": "Nome do site", "sites": "Sites", "siteurl": "URL do site", @@ -175,7 +222,9 @@ "spaceusage": "Uso do espaço", "stop": "Pare", "strings": "Cadeias de caractere", + "submissions": "Tarefas enviadas", "synchronization": "Sincronização", + "syncthistasknow": "Sincronizar esta tarefa agora", "system": "Sistema", "takephoto": "Tire uma foto", "takepicture": "Câmera", @@ -189,26 +238,35 @@ "total": "Total", "totalusage": "Uso total", "type": "Tipo", + "unblockcontact": "Desbloquear contato", "unexpectederror": "Erro inesperado. Por favor, feche e abra novamente o aplicativo para tentar novamente", "update": "Atualizar", "updatesite": "Atualize o site", "upload": "Carregar", + "uploadfile": "Carregar arquivo", "uploading": "Enviando", "uploadingtoprivatefiles": "Enviando para sua área de arquivos pessoais", + "uselocalmobileplugin": "Esta página funciona melhor se o site do Moodle tiver o plugin móvel opcional instalado", "userfrom": "do(a)", "username": "Nome de Usuário", "usernamelabel": "Usuário", "usernamerequired": "Nome de usuário exigido", + "video": "Vídeo", "videofilenameprefix": "iphone_upload-video", + "videostored": "Seu vídeo foi armazenado no seu espaço de arquivos privados", "view": "Ver", "viewableonthisapp": "Visível neste aplicativo", + "viewsubmission": "Ver envio", "warning": "Aviso", + "webservicesnotenabled": "Web Services não estão ativados em seu site. Por favor, contate a administradora do seu Moodle se você achar que o acesso móvel deve ser ativado.", + "webservicesuccessfullyexecuted": "Serviço da Web executado com êxito", "website": "Site", - "weight": "peso", + "weight": "Peso", "welcome": "Bem vindo ao aplicativo Moodle Mobile", "writeherethebug": "Escreva aqui uma descrição detalhada do problema", - "years": "anos", + "years": "Anos", "yes": "Sim", + "youarein": "Você está em:", "yourpassword": "senha", "yoursiteurl": "https:\/\/seumoodle.com", "yourusername": "usuário" diff --git a/lang/ru.json b/lang/ru.json index f699a6b6d..a6cff7ab2 100644 --- a/lang/ru.json +++ b/lang/ru.json @@ -8,15 +8,19 @@ "addnote": "Добавить примечание", "address": "Адрес", "addsite": "Добавить сайт", + "addsubmission": "Добавить ответ на задание", "allcachesinvalidated": "Все кэши недействительны", "allcachespurged": "Все кэши очищены", + "allowsubmissionsfromdate": "Разрешить выполнение задания с", "areyousurereset": "Вы уверены, что хотите сбросить настройки приложения? Все Ваши сайты будут удалены.", "audionotavailable": "Аудио-вход оборудования не доступен", "audiorecordinstructions": "Нажмите «Запись», чтобы начать запись звука; «Стоп» - чтобы остановить запись и загрузить файл.", "authenticating": "Аутентификация", "author": "Автор", - "average": "Средняя оценка", + "average": "Среднее", "back": "Назад", + "blockcontact": "Заблокировать контакт", + "blockedusers": "Заблокированные пользователи ({$a})", "browsephotoalbums": "Фотоальбом", "cacheexpirationtime": "Срок действия кэша (миллисекунд)", "cancel": "Отменить", @@ -24,6 +28,7 @@ "cannotconnect": "Не удается подключиться: убедитесь, что Вы ввели правильный URL-адрес и что сайт использует Moodle 2.4 или более поздней версии.", "cannotconnectssl": "Не удается подключиться: убедитесь, что Вы ввели правильный URL-адрес; сайт использует Moodle 2.4 или более поздней версии и сертификат SSL является действительным.", "cannotsendmessage": "Сеть не доступна. Ваше сообщение было сохранено в очереди задач; Вы можете повторно отправить его, как только сеть будет доступна.", + "choosefile": "Выберите файл", "city": "Город", "close": "Закрыть", "completed": "Завершено", @@ -31,14 +36,17 @@ "confirmdeletetask": "Вы уверены, что хотите удалить эту задачу?", "contact": "Контакты", "contactadd": "Контакт добавлен в адресную книгу телефона", + "contacts": "Контакты", "content": "Содержимое", "contents": "Содержание", "contentyetnotavailable": "Данный вид деятельности еще не доступен через мобильное приложение", "continue": "Продолжить", + "contributiontocoursetotal": "Вклад в курс", "country": "Страна", "course": "Курс", "coursename": "Название курса", "csssynced": "Отдаленные CSS синхронизированы", + "cutoffdate": "Запретить отправку с", "date": "Дата", "days": "Дни", "delete": "Удалить", @@ -49,12 +57,15 @@ "details": "Подробнее", "development": "Разработка", "deviceinfo": "Информация об устройстве", + "disabled": "На этом сайте отключена система обмена сообщениями.", "disablenotifications": "Отключить уведомления", "disablerdebugger": "Отключить оталённую отладку", "discussions": "обсуждения", "docsurl": "http:\/\/docs.moodle.org\/ru\/Mobile_app", "downloadremotefile": "Скачать отдалённый файл", "downloadtime": "Скачано", + "duedate": "Последний срок сдачи", + "duedateno": "Срок сдачи не ограничен", "email": "Эл.почта", "empty": "пусто", "enableautosync": "Включить автосинхронизацию", @@ -67,6 +78,7 @@ "enablenotificationscheck": "

В первую очередь необходимо проверить поддержку вашим сайтом Moodle мобильных уведомлений. Откройте свой сайт Moodle и перейдите в Администрирование \/ Настройки моего профиля \/ Сообщения. Если мобильные уведомления включены, то Вы увидите колонку «Мобильные уведомления» <\/p>", "enablenotificationswarning": "

Для использования уведомлений необходима информация о модели мобильного устройства и операционной системы сайта Moodle. <\/p>", "enablerdebugger": "Включить отдалённую отладку", + "enablesyncwifi": "Разрешить синхронизацию только по Wi-Fi", "error": "Ошибка", "errorcamera": "Ошибка подключения камеры", "errorcameramsg": "Устройство не поддерживает камеру", @@ -77,12 +89,14 @@ "errorduringdevicetokenrequesttoapns": "Ошибка запроса ключа устройства к APNS", "errorlistingfiles": "Ошибка при получении файлов из этого каталога", "errornoconnectednocache": "Устройство не подключено и для запрашиваемого параметра кэшированная информация не доступна.", + "errorreadingfile": "Ошибка чтения файла «{$a}»", "errorregisteringdeviceinmoodle": "Ошибка регистрации устройства в Moodle", "errorretrievinggradeinformation": "Ошибка при получении информации об оценке", "erroruploading": "Ошибка загрузки файла", "estimatedfreespace": "Ориентировочное свободное место", "events": "События календаря", "feedback": "Обратная связь", + "file": "Файл", "filedownloaded": "Файл скачен", "filename": "Имя файла", "filesize": "Размер", @@ -109,7 +123,7 @@ "invalidmoodleversion": "Неверная версия Moodle. Минимальная требуемая версия:", "invalidscheme": "Укажите действующий URL-адрес сайта.", "invalidsite": "URL-адрес сайта недействителен.", - "itemname": "Название", + "itemname": "Элемент оценки", "keepsynchronising": "Дождитесь синхронизации сообщений с сервера", "langsynced": "Язык синхронизирован", "language": "Язык", @@ -138,6 +152,8 @@ "networkerrormsg": "Сеть не включена или не работает.", "next": "Следующая", "no": "Нет", + "noevents": "Нет событий", + "nomessagesfound": "Сообщения не найдены", "norefreshdisconnected": "Настройки обновлены, требуется сетевое соединение", "notaskstobesynchronized": "Нет задач, которые должны быть синхронизированы", "noteadded": "Заметка добавлена", @@ -146,8 +162,14 @@ "notifications": "Уведомления", "notificationsdisabled": "Уведомления отключены", "notificationsenabled": "Уведомления включены для всех ваших сайтов Moodle", + "nousersfound": "Пользователи не найдены", + "offlinecontacts": "Оффлайн контакты ({$a})", "offlinemode": "Автономный режим", "ok": "ОК", + "onlinecontacts": "Онлайн контакты ({$a})", + "openinbrowser": "Открыть в браузере", + "others": "Другие", + "participant": "Участник", "participants": "Участники", "password": "Пароль", "passwordlabel": "Пароль", @@ -162,12 +184,13 @@ "privatefiles": "Личные файлы", "purgecaches": "Очистка кэша", "range": "Диапазон", - "rank": "Место", + "rank": "Ранг", "rdebuggingenabledfor": "Отдалённая отладка будет включена на следующее время (в секундах):", "record": "Запись", "recordaudio": "Аудио", "recordstored": "Ваша запись была сохранена в личной области", "remotesystemnotconfiguredfornotifications": "Сайт Moodle не настроен для отправки мобильных уведомлений. Пожалуйста, обратитесь к администратору Moodle, если Вы считаете, что уведомления должны быть включены.", + "removecontact": "Удалить контакт", "replay": "Повтор", "reply": "Ответить", "reportabug": "Сообщить об ошибке", @@ -187,7 +210,7 @@ "settings": "Настройки", "showall": "Показать все", "showlog": "Показать журнал событий", - "showmore": "Показать больше ...", + "showmore": "Показать больше", "siteexists": "Этот сайт уже имеется.", "sitefiles": "Файлы сайта", "siteinmaintenance": "Ваш сайт находится в режиме обслуживания", @@ -199,6 +222,7 @@ "spaceusage": "Используемое пространство", "stop": "Стоп", "strings": "Строки", + "submissions": "Ответы", "synchronization": "Синхронизация", "syncthistasknow": "Синхронизировать эту задачу сейчас", "system": "Система", @@ -214,10 +238,12 @@ "total": "Всего", "totalusage": "Всего использовано", "type": "Тип", + "unblockcontact": "Разблокировать сообщения от этого собеседника", "unexpectederror": "Неизвестная ошибка. Пожалуйста, закройте и снова еще раз откройте приложение", "update": "Обновление", "updatesite": "Обновить сайт", "upload": "Загрузить", + "uploadfile": "Загрузить файл", "uploading": "Загрузка", "uploadingtoprivatefiles": "Загрузка в область личных файлов", "uselocalmobileplugin": "Эта страница работает лучше, когда на сайте Moodle установлен дополнительный плагин Mobile", @@ -228,13 +254,14 @@ "video": "Видео", "videofilenameprefix": "iphone_upload-video", "videostored": "Ваше видео было загружено в личную область", - "view": "Просмотр", + "view": "Вид", "viewableonthisapp": "Видимое на этом приложени", + "viewsubmission": "Просмотр ответов", "warning": "Предупреждение", "webservicesnotenabled": "Сетевые службы не включены на сайте. Пожалуйста, обратитесь к администратору сайта Moodle, если Вы считаете, что мобильный доступ должен быть включен.", "webservicesuccessfullyexecuted": "Сетевая служба успешно выполняется", "website": "Сайт", - "weight": "вес", + "weight": "Вес", "welcome": "Добро пожаловать в мобильное приложение Moodle", "writeherethebug": "Напишите здесь подробное описание проблемы", "years": "Годы", diff --git a/lang/sv.json b/lang/sv.json index 5ee445689..fc872a3e3 100644 --- a/lang/sv.json +++ b/lang/sv.json @@ -8,8 +8,10 @@ "addnote": "Lägg till en anteckning", "address": "Adress", "addsite": "Lägg till en webbplats", + "addsubmission": "Lägg till inskickat bidrag", "allcachesinvalidated": "Alla chachar ogiltigförklarade", "allcachespurged": "Alla cachar rensas", + "allowsubmissionsfromdate": "Tillåt inlämning från", "areyousurereset": "Är du säker på att du vill återställa programmet? Alla dina sidor kommer att raderas.", "audionotavailable": "Audio input hårdvara inte tillgängligt", "audiorecordinstructions": "Tryck på Spela in för att starta ljudinspelning, Stopp för att stoppa och ladda upp filen.", @@ -17,6 +19,8 @@ "author": "Författare", "average": "Medelvärde", "back": "Back", + "blockcontact": "Blockera kontakt", + "blockedusers": "Blockerade användare ({$a})", "browsephotoalbums": "Fotoalbum", "cacheexpirationtime": "Cache utgångs tid (millisekunder)", "cancel": "Avbryt", @@ -24,6 +28,7 @@ "cannotconnect": "Kan inte ansluta: Kontrollera att webbadressen är korrekt och att din webbplats använder Moodle 2.4 eller senare", "cannotconnectssl": "Kan inte ansluta: Kontrollera att webbadressen är korrekt, din webbplats använder Moodle 2.4 eller senare och SSL-certifikatet är giltigt", "cannotsendmessage": "Nätverket är inte nåbar. Ditt meddelande har sparats i uppgifts kö, du kan skicka det igen när du är online", + "choosefile": "Välj en fil", "city": "Stad", "close": "Stäng", "completed": "Färdig", @@ -31,6 +36,7 @@ "confirmdeletetask": "Är du säker på att du vill ta bort detta?", "contact": "Kontakt", "contactadd": "Kontakt läggs till telefonens kontaktlista", + "contacts": "Kontakter", "content": "Innehåll", "contents": "Innehåll", "contentyetnotavailable": "Denna typ av aktivitet är ännu inte tillgänglig via den mobila applikationen", @@ -39,6 +45,7 @@ "course": "Kurs", "coursename": "Kursbeteckning", "csssynced": "Remote CSS synkroniserat", + "cutoffdate": "Avstängningsdatum", "date": "Datum", "days": "Dagar", "delete": "Ta bort", @@ -49,12 +56,15 @@ "details": "Detaljer", "development": "Utveckling", "deviceinfo": "Device info", + "disabled": "Funktionen meddelanden är avaktiverad på den här webbplatsen", "disablenotifications": "Inaktivera meddelanden", "disablerdebugger": "Inaktivera fjärrfelsökning", "discussions": "Diskussionsämnen", "docsurl": "", "downloadremotefile": "Hämta fjärrfilen", "downloadtime": "Nedladdat", + "duedate": "Slutdatum\/tid", + "duedateno": "Inget slutdatum\/tid", "email": "Skicka", "empty": "tom", "enableautosync": "Aktivera automatisk synkronisering", @@ -77,12 +87,14 @@ "errorduringdevicetokenrequesttoapns": "Fel när enhetens token tar kontakt till APNS", "errorlistingfiles": "Fel vid hämtning av filer från denna katalog", "errornoconnectednocache": "Apparaten är inte uppkopplat och det finns inga sparade data angiven för det begärda alternativet", + "errorreadingfile": "Fel i samband med läsningen av filen \"{$a}\"", "errorregisteringdeviceinmoodle": "Fel vid registrering av enheten i Moodle", "errorretrievinggradeinformation": "Fel vid hämtning betygsinformation", "erroruploading": "Fel vid uppladdning av fil", "estimatedfreespace": "Beräknad ledigt utrymme", "events": "Kalenderhändelser", "feedback": "Feedback", + "file": "Fil", "filedownloaded": "Fil nerladdat", "filename": "Fil namn", "filesize": "Storlek", @@ -135,6 +147,7 @@ "networkerrormsg": "Nätverket är inte aktiverat eller fungerar inte", "next": "Fortsätt", "no": "Nej", + "nomessagesfound": "Det gick inte att hitta några nya meddelanden", "norefreshdisconnected": "Alternativet uppdatering kräver nätverksanslutning", "notaskstobesynchronized": "Inga uppgifter som ska synkroniseras", "noteadded": "Anteckningar lagt till", @@ -143,8 +156,13 @@ "notifications": "Meddelanden", "notificationsdisabled": "Meddelanden är inaktiverade", "notificationsenabled": "Meddelanden aktiverade", + "nousersfound": "Det gick inte att hitta några användare", + "offlinecontacts": "Kontakter i frånkopplat läge ({$a})", "offlinemode": "Offline-läge", "ok": "OK", + "onlinecontacts": "Kontakter i uppkopplat läge ({$a})", + "others": "Andra", + "participant": "Deltagare", "participants": "Deltagare", "password": "Lösenord", "passwordlabel": "Password", @@ -165,6 +183,7 @@ "recordaudio": "Ljud", "recordstored": "Din inspelning har lagrats i dina privata filer", "remotesystemnotconfiguredfornotifications": "Moodle installationen är inte konfigurerad för att skicka mobila meddelanden. Kontakta din Moodleadministrator om du tycker att meddelanden ska aktiveras.", + "removecontact": "Ta bort kontakt", "replay": "Spela upp", "reply": "Svara", "reportabug": "Rapportera ett fel", @@ -195,6 +214,7 @@ "spaceusage": "Utrymmesanvändning", "stop": "Stop", "strings": "Strängar", + "submissions": "Inskickade uppgifter", "synchronization": "Synkronisering", "syncthistasknow": "Synkronisera denna uppgift nu", "system": "System", @@ -210,10 +230,12 @@ "total": "Total", "totalusage": "Total användning", "type": "Typ", + "unblockcontact": "Ta bort blockering av användare", "unexpectederror": "Oväntad fel. Stäng och öppna programmet igen för ett nytt försök.", "update": "Uppdatera", "updatesite": "Uppdatera sidan", "upload": "Ladda upp", + "uploadfile": "Ladda upp fil", "uploading": "Uppladdning", "uploadingtoprivatefiles": "Ladda upp till din privata filer", "uselocalmobileplugin": "Denna sidan fungerar bättre när Moodlewebbplatsen har den valfria Mobile plugin installerat", @@ -226,6 +248,7 @@ "videostored": "Din video har lagrats i din privata filer", "view": "Visa", "viewableonthisapp": "Kan visas på denna app", + "viewsubmission": "Visa inlämning", "warning": "Varning", "webservicesnotenabled": "Web Services är inte aktiverat i din webbplats. Vänligen kontakta din Moodleadministrator om du tycker att mobil åtkomst ska aktiveras.", "webservicesuccessfullyexecuted": "Web Service utfördes korrekt", diff --git a/lang/tr.json b/lang/tr.json index a5456c275..495a76217 100644 --- a/lang/tr.json +++ b/lang/tr.json @@ -3,38 +3,45 @@ "activity": "Etkinlik", "add": "Ekle", "addcontact": "Rehbere ekle", - "addedtoqueue": "Şu an çevrimdışısınız,işlerini kayadan alınmış ve görev sırasına eklemiştir.", + "addedtoqueue": "Şu an çevrimdışısınız,işleriniz kayda alınmış ve görev sırasına eklemiştir.", "addfakenotifications": "Sahte bildirim ekle", "addnote": "Not ekle", "address": "Adres", "addsite": "Site ekle", - "allcachesinvalidated": "Tüm onbelleklerin tarihi gecersiz", - "allcachespurged": "Tüm önbeşlekşer temizlendi", - "areyousurereset": "Ayarları sıfırlamak istediğiniz den eminmisin. Bunu yaptığınız da tum kayıtları site leriniz silinecektir", + "addsubmission": "Gönderim ekle", + "allcachesinvalidated": "Tüm önbelleklerin tarihi gecersiz", + "allcachespurged": "Tüm önbellekler temizlendi", + "allowsubmissionsfromdate": "Başvuru izni başlangıcı", + "areyousurereset": "Ayarları sıfırlamak istediğinizden emin misiniz? Bunu yaptığınız da tüm kayıtlı siteleriniz silinecektir.", "audionotavailable": "Ses giriş cihazınız kullanılamıyor", - "audiorecordinstructions": "Ses kaydını başlatmak için kayıt düğmesine basınız. Dosya yuklemesini durdurmak için durdur düğmesine basın.", - "authenticating": "Kabul", + "audiorecordinstructions": "Ses kaydını başlatmak için kayıt düğmesine basınız. Dosya yuklemesini durdurmak için durdur düğmesine basınız.", + "authenticating": "Kimlik doğrulanıyor", "author": "Yazan", "average": "Ortalama", "back": "Geri", + "blockcontact": "Kişiyi engelle", + "blockedusers": "Engellenen kullanıcılar ({$a})", "browsephotoalbums": "Fotoğraf albümü", "cacheexpirationtime": "Önbellek zaman aşımı (milisaniye)", "cancel": "Vazgeç", "cannotaddnote": "Ağa ulaşılamıyor. Notunuz görev kaydına eklenmiştir. Çevrim içi olduğunuzda yeniden gondermeyi deneyebilirsiniz.", - "cannotconnect": "Bağlantı kurulamıyor:dogru adres girdiğinizden ve sitenizin Moodle 2.4 ve sonrası sürüme sahip olduğundan emin olun.", - "cannotconnectssl": "Bağlantı kurulamıyor:dogru adres girdiğinizden ve sitenizin Moodle 2.4 ve sonrası sürüme sahip olduğundan ve sbl sertifikanızın gecerli olduğudan emin olun.", - "cannotsendmessage": "Ağa ulaşılamıyor. mesajınız görev kaydına eklenmiştir. Çevrim içi olduğunuzda yeniden gondermeyi deneyebilirsin", + "cannotconnect": "Bağlantı kurulamıyor: Doğru adres girdiğinizden ve sitenizin Moodle 2.4 ve sonrası sürüme sahip olduğundan emin olun.", + "cannotconnectssl": "Bağlantı kurulamıyor: Doğru adres girdiğinizden ve sitenizin Moodle 2.4 ve sonrası sürüme sahip olduğundan ve sbl sertifikanızın gecerli olduğudan emin olun.", + "cannotsendmessage": "Ağa ulaşılamıyor. mesajınız görev kaydına eklenmiştir. Çevrim içi olduğunuzda yeniden gondermeyi deneyebilirsiniz.", + "choosefile": "Dosya seç", "city": "Şehir", "close": "Kapat", "completed": "Tamamlandı", "confirmcontinuedownload": "Dosyayı indirmek istediğinizden eminmisiniz?", "confirmdeletetask": "Bu görevi silmek istediğinizden eminmisiniz?", "contact": "Kişi", - "contactadd": "Kişi telefon rehnerinize eklendi", + "contactadd": "Kişi telefon rehberinize eklendi", + "contacts": "Kişiler", "content": "İçerik", - "contents": "Içerik(ler)", + "contents": "İçerik(ler)", "contentyetnotavailable": "Bu etkinlik türü mobil uygulamada kullanılamaz.", "continue": "Devam et", + "contributiontocoursetotal": "Katıldığınız toplam kurs sayısı", "country": "Ülke", "course": "Kurs", "coursename": "Kurs adı", @@ -47,69 +54,93 @@ "deletesitefiles": "Bu siteden indirdiğiniz dosyaları silmek istediğinizden eminmisiniz?", "description": "Açıklama", "details": "Detaylar", - "development": "Geliştirme", + "development": "Gelişmiş ayarlar", "deviceinfo": "Aygıt bilgisi", + "disabled": "Mesajlaşma bu sitede etkinleştirilmemiş", "disablenotifications": "Uyarıları iptal et", - "disablerdebugger": "Uzaktan hata ayıklamayı devredelim dışı bırak", + "disablerdebugger": "Uzaktan hata ayıklamayı devre dışı bırak", "discussions": "tartışma", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "Harici dosya indirin", "downloadtime": "İndirildi", - "email": "E-posta", - "empty": "Indirildi", + "duedate": "Son teslim tarihi", + "duedateno": "Süresiz", + "email": "E-posta gönder", + "empty": "boş", "enableautosync": "Otomatik senkronizasyonu etkinleştir", + "enableautosynccss": "Ek CSS Senkronizasyon", "enableautosynclang": "Dil dosyalarının senkronizasyonu", + "enableautosyncws": "İşlemler ve veri senkronizasyonu", + "enablecss3transitions": "CSS3 Geçişlerini etkinleştiriniz", "enabledebugging": "Hata ayıklamayı etkinleştir", - "enablenotifications": "Uyarıları etkinleştir", - "enablenotificationscheck": "

Öncelikle Moodle sitenizin Mobil uyarıları desteklediğiinden emin olun. Bunun için Moodle sitenizin \/ Site Yönetimi \/ Profil ayarları \/ Mesajlaşma bolümünü Kontrol edin eğer bu bölüm aktifleştirilmiş ise Mobil bildirimler satırını förmelisiniz.

", - "enablerdebugger": "Uzaktan hata ayıklamayı etkinleştir", + "enablenotifications": "Uyarıları etkinleştiriniz", + "enablenotificationscheck": "

Öncelikle Moodle sitenizin Mobil uyarıları desteklediğiinden emin olun. Bunun için Moodle sitenizin \/ Site Yönetimi \/ Profil ayarları \/ Mesajlaşma bolümünü Kontrol edin eğer bu bölüm aktifleştirilmiş ise Mobil bildirimler satırını görmelisiniz.

", + "enablenotificationswarning": "

Bildirimleri etkinleştirmenize, biz Moodle sitede mobil cihaz modeli ve işletim sistemi vb bilgileri toplamak için hitiyaç duyuyoruz. <\/p>", + "enablerdebugger": "Uzaktan hata ayıklamayı etkinleştiriniz", + "enablesyncwifi": "Sadce Kablosuz bağlantı açıkken güncelleştirmeye izin veriniz", "error": "Hata", "errorcamera": "Kameraya erişilemiyor", - "errorcameramsg": "cihazınızın kamera desteği yok", + "errorcameramsg": "Cihazınızın kamera desteği yok", "errorcapturingaudio": "Ses çalma hatası", "errorcapturingvideo": "Video oynatma hatası", - "errordownloading": "Dosya indirmek indirmesinde hata", + "errordownloading": "Dosya indirmede hata", + "errorduringdevicetokenrequest": "Cihaz istek alırken hata oluştu", + "errorduringdevicetokenrequesttoapns": "APNS isteği alırken hata oluştu", + "errorlistingfiles": "Klasördeki dosyalar alınırken hata oluştu", + "errornoconnectednocache": "Cihaz bağlı değil, ve istediğiniz seçeneğe ait bilgiler önbellekte mevcut değil.", + "errorreadingfile": "\"{$a}\" dosyasını okurken hata oluştu", + "errorregisteringdeviceinmoodle": "Cihazınızın Moodle'a kaydı esnasında hata olustu", "errorretrievinggradeinformation": "Not bilgileri alınırken hata oluştu", "erroruploading": "Dosya yüklemede hata oluştu", - "estimatedfreespace": "Tatmini boş alan", + "estimatedfreespace": "Tahmini boş alan", "events": "Takvim etkinliği", "feedback": "Geribildirim", + "file": "Dosya", "filedownloaded": "Dosya indirildi", "filename": "Dosya adı", "filesize": "Boyut", "fileuploaded": "Dosya yüklendi", "fileurl": "Dosya URL'si", + "forcecsssync": "CSS senkronizasyonuna zorla", + "forcelangsync": "Dil senkronizasyonuna zorla", + "forceofflinemode": "Çevrimdışı moda zorla", "forumnodiscussionsyet": "Bu forum da henuz hiç tartışma başlığı yok", "forumnumreplies": "cevaplar", "fullname": "Tam isim", "general": "Genel", - "grade": "Derece", - "grades": "Derece", - "groupeventsnotdisplayed": "Grup yaklaşan olaylar görüntülenemiyor", + "grade": "Puan", + "grades": "Puan(lar)", + "groupeventsnotdisplayed": "Grup olayları görüntülenemiyor", "help": "Yardım", - "helpmelogin": "

Dünyada binlerce Moodle Sitesi var. Bu uygulama sadece Moodle App girişine izin verilmiş olan Moodle Sitelerinde çalışır<\/>

Eğer moodle sitenizle bağlantı kuramıyorsanız, Moodle yöneticinize başvurun nereyle bağlantı kuramıyorsanız, yöneticizle iletişime geçin ve şu linkteki açıklamaları okumasını isteyin a href=\"http:\/\/docs.moodle.org\/en\/Mobile_app\" target=\"_blank\">http:\/\/docs.moodle.org\/en\/Mobile_app<\/a><\/p>

Deneme yapmak için Moodle demo sitesinde ilgili alanlara teacher<\/i> or student<\/i> in the Site URL<\/i> seçeneklerini girin ve akle butonuna tıklayın", + "helpmelogin": "

Dünyada binlerce Moodle Sitesi var. Bu uygulama sadece Moodle App girişine izin verilmiş olan Moodle Sitelerinde çalışır<\/>

Eğer moodle sitenizle bağlantı kuramıyorsanız, Moodle yöneticinize başvurun nereyle bağlantı kuramıyorsanız, yöneticizle iletişime geçin ve şu linkteki açıklamaları okumasını isteyin http:\/\/docs.moodle.org\/en\/Mobile_app<\/a><\/p>

Deneme yapmak için Moodle demo sitesinde ilgili alanlara öğretmen<\/i> veya öğrenci<\/i>içinde Site URL<\/i> seçeneklerini girin ve ekle butonuna tıklayın", "hours": "Saat", "icantlogin": "Giriş yapamıyorum", + "imagestored": "Resimleriniz özel depolalama alanınıza kaydedildi.", "info": "bilgi", "initializing": "Yükleniyor....", - "invalidaccount": "Lütfen giriş bilgileriniz kontrol ediniz veya Site ayarllarını kontrol edmesi için yöneticinize başvurun", + "invalidaccount": "Lütfen giriş bilgileriniz kontrol ediniz veya Site ayarlarını kontrol etmesi için yöneticinize başvurun.", "invalidmoodleversion": "Geçersiz Moodle sürümü. Sitenizin Sürümünün şundan aşağı olmaması gerekir:", - "invalidscheme": "Geçerli bir site adresi girin", + "invalidscheme": "Geçerli bir site adresi giriniz.", "invalidsite": "Bu site adresi geçersizdir.", - "itemname": "Öge adı", + "itemname": "Not ögesi", + "keepsynchronising": "Mesajlarınızı sunucuyla senkron tutun", "langsynced": "Dil güncellendi", - "language": "Dil", - "lettergrade": "Harf notu", + "language": "Lisan", + "lettergrade": "Harf derecesi", "license": "Lisans", + "loadcordovaemulator": "Cordova emülatörü yükleniyor", "loading": "Yükleniyor", "localpath": "Yerel adres", "location": "Yer", + "logininsiterequired": "Bir tarayıcı penceresinde siteye giriş yapmanız gerekiyor.", "logout": "Çıkış", + "lostconnection": "Bağlantınızı kaybettik, yeniden bağlanmanız gerekiyor. Verileriniz artık geçerli değil.", "manageaccounts": "Hesapları Yönet", "message": "Mesaj", "messages": "Mesaj(lar)", "messagesent": "Mesajınız gönderildi", "minutes": "Dakika", + "mobileservicesnotenabled": "Mobil Hizmetler sitenizde etkin değildir. Mobil erişimin etkin olduğunu düşünüyorsanız, Lütfen Moodle site yöneticinize başvurun.", "modulename": "Modül Adı", "months": "Ay(lar)", "moodlehelp": "Yardım", @@ -117,17 +148,28 @@ "myfiles": "Dosyalarım", "name": "İsim", "networkerror": "Ağ erişilemez", + "networkerrormsg": "Ağ etkin değil ya da çalışmıyor.", "next": "İleri", "no": "Hayır", "noevents": "Hiç bildiriminiz yok", + "nomessagesfound": "Hiç mesaj bulunamadı", "norefreshdisconnected": "Yenileme yapabilmeniz için ağ bağlantısı gereklidir", "notaskstobesynchronized": "Görevler güncellenemedi", "noteadded": "Not eklendi", + "noticelargefile": "İndirmek istedğiniz dosya oldukça büyük, indirmenin tamamlanmasının biraz zaman alacağını lütfen unutmayın", + "notificationpreferencesnotconfigured": "Mobil bildirim tercihleri henüz yapılandırılmamış. Bir web tarayıcısı kullanarak Moodle giriş yapın ve kullanıcı profilinde Mesaj ayarlarını yapılandırın.", "notifications": "Bildirimler", "notificationsdisabled": "Bildirimler kapatıldı", - "offlinemode": "Çevrimdışı kipi", + "notificationsenabled": "Bildirimler tüm moodle siteliriniz için etkinleştirildi.", + "notificationshowtoenable": "Uyarıları görüntülemeyi etkinleştirin", + "nousersfound": "Kullanıcı bulunamadı", + "offlinecontacts": "Çevrimdişi kullanıcılar ({$a})", + "offlinemode": "Çevrimdışı kip", "ok": "Tamam", + "onlinecontacts": "Çevrimiçi kişiler ({$a})", "openinbrowser": "Tarayıcıda aç", + "others": "Diğerleri", + "participant": "Katılımcı", "participants": "Katılımcılar", "password": "Şifre", "passwordlabel": "Şifre", @@ -136,17 +178,26 @@ "percentage": "Yüzde", "phone1": "Telefon", "phone2": "Mobil", + "pluginname": "Moodle Mobil dil dizeleri", "preview": "Önizleme", "previous": "Önceki", + "privatefiles": "Özle dosyalar", "purgecaches": "Önelleği temizle", "range": "Aralık", - "rank": "sıra", + "rank": "Derece", + "rdebuggingenabledfor": "Uzaktan hata ayıklama şu saniye boyunca etkin olacak:", "record": "Kayıt", "recordaudio": "Ses", + "recordstored": "Kayıtlarınız özel alanda depolandı", + "remotesystemnotconfiguredfornotifications": "Moodle kurulumunuz mobil bildirimleri göndermek için yapılandırılmamış. Eğer bildirimleri etkin olduğunu düşünüyorsanız, Lütfen Moodle yöneticinize başvurun.", + "removecontact": "Kişiyi kaldır", "replay": "Tekrar çal", - "reply": "Yanıtla", + "reply": "Terkarla", + "reportabug": "Hata bildir", + "reportbuginfo": "E-posta yoluyla bir hata raporu göndermek için e-posta düğmesine tıklayın

E-posta gövdesinde sorunun ayrıntılı bir açıklamasını yazmayı unutmayın<\/b>

Bazı hata ayıklama bilgileri eklenecektir (özel bilgi eklenmeyecektir)", "requiredfields": "Tüm zorunlu olanlar doldurulmalıdır.", - "reset": "Temizle", + "reset": "Sıfırla", + "resetapp": "Uygulamaları sıfırla", "save": "Kaydet", "saving": "Kaydediliyor.....", "seconds": "Saniye", @@ -167,15 +218,20 @@ "sites": "Site(ler)", "siteurl": "Sİte Adresi", "siteurllabel": "Site adresi", - "siteurlrequired": "Site adresi gereklidir örgneğin http:\/\/www.yourmoodlesite.abc veya https:\/\/www.yourmoodlesite.efg<\/i> gibi", + "siteurlrequired": "Site adresi gereklidir, örneğin http:\/\/www.yourmoodlesite.abc veya https:\/\/www.yourmoodlesite.efg<\/i> gibi", + "spaceusage": "Kullanılan alan", "stop": "Dur", + "strings": "Dizeler", + "submissions": "Gönderimler", "synchronization": "Eşitleme", + "syncthistasknow": "Şu anki görevi senkronize et", "system": "Sistem", - "takephoto": "Fotoğraf cek", + "takephoto": "Fotoğraf çek", "takepicture": "Kamera", - "therearentmessagesyet": "Hiç mesajını yok", - "therearentnotificationsyet": "Hiç uyarınız yok", - "threemonthsmore": "3 Aydın ve daha fazla olanınıda göster", + "taskqueue": "Görev kuyruğu", + "therearentmessagesyet": "Hiç mesajınız yok", + "therearentnotificationsyet": "Hiç bildiriminiz yok", + "threemonthsmore": "3 ay ve daha fazlasını göster", "timecreated": "Tarih eklendi", "timeduration": "Zaman aralığı", "timemodified": "Son duzenlenme tarihi", @@ -183,24 +239,35 @@ "total": "Toplam", "totalusage": "Toplam kullanım", "type": "Tür", + "unblockcontact": "Engeli kaldır", "unexpectederror": "Beklenmeyen hata. Lütfen uygulamanızı yeniden açın ve tekrar deneyin", - "update": "Guncelle", - "updatesite": "Siteyi guncelle", + "update": "Güncelle", + "updatesite": "Siteyi güncelle", "upload": "Yükleme", + "uploadfile": "Dosya yükle", "uploading": "Yükleniyor", + "uploadingtoprivatefiles": "Özel dosya alanınıza yükleniyor", + "uselocalmobileplugin": "Mobile eklentisi yüklenmiş olan Moodle sitelerinde bu sayfa daha iyi çalışır.", + "userfrom": "Kimden", "username": "Kullanıcadı", "usernamelabel": "Kullanıcıadı", "usernamerequired": "Kullanıcı adı gerekiyor", "video": "Video", - "view": "Bakma", + "videofilenameprefix": "iphone_upload-video", + "videostored": "Videonuz özel saklama alanına yüklendi", + "view": "Görünüm", + "viewableonthisapp": "Uygulama üzerinde görüntülenebilir", "warning": "Uyarı", - "website": "website", - "weight": "ağırlık", - "welcome": "Moodle mail uygulamasına hoş geldiniz", - "writeherethebug": "Bursa sorununuzla ilgili acıklama giriniz", - "years": "Uıl", + "webservicesnotenabled": "Sitenizin Web Hizmetleri ektin değildir. Mobil erişimin etkin olduğunu düşünüyrosanız. Moodle site yöneticinize başvurun.", + "webservicesuccessfullyexecuted": "Web hizmeti başarıyla çalıştırıldı", + "website": "Websitesi", + "weight": "Ağırlık", + "welcome": "Moodle mobil uygulamasına hoş geldiniz", + "writeherethebug": "Buraya sorununuzla ilgili açıklama giriniz", + "years": "Yıl(lar)", "yes": "Evet", + "youarein": "Şuradasınız:", "yourpassword": "Şifre", - "yoursiteurl": "https:\/\/siztinsetiniz.com", + "yoursiteurl": "https:\/\/siztinmoodleniz.com", "yourusername": "kullanıcı adı" } \ No newline at end of file diff --git a/lang/zh_cn.json b/lang/zh_cn.json index a40449cd3..bbc6998a1 100644 --- a/lang/zh_cn.json +++ b/lang/zh_cn.json @@ -5,11 +5,13 @@ "addcontact": "添加为联系人", "addedtoqueue": "您已下线;您的操作已经被添加到任务队列中。", "addfakenotifications": "添加假冒通知", - "addnote": "添加关注", + "addnote": "添加笔记", "address": "地址", "addsite": "添加站点", + "addsubmission": "添加提交", "allcachesinvalidated": "所有缓存已失效", "allcachespurged": "所有缓存已被清空", + "allowsubmissionsfromdate": "开启时间", "areyousurereset": "您确定要重置APP吗?这样,您的所有站点都会被删除。", "audionotavailable": "音频输入设备不可用", "audiorecordinstructions": "触按“录制”按钮开始录音,“停止”按钮结束录音,并上传文件。", @@ -17,6 +19,8 @@ "author": "作者", "average": "平均", "back": "后退", + "blockcontact": "屏蔽联系人", + "blockedusers": "屏蔽用户({$a})", "browsephotoalbums": "相册", "cacheexpirationtime": "缓存过期时间(毫秒)", "cancel": "取消", @@ -24,6 +28,7 @@ "cannotconnect": "无法连接:请确认您已经正确输入网址,并且您的网站使用了Moodle 2.4或更高版本。", "cannotconnectssl": "无法连接:请确认你已经正确输入网址,您的网站使用了Moodle 2.4或更高版本,并且SSL证书是有效的。", "cannotsendmessage": "网络无法连接。您的消息已保存至任务队列中;一旦您重新上线,您就可以重新发送。", + "choosefile": "选择一个文件", "city": "城市", "close": "关闭", "completed": "已经完成", @@ -31,6 +36,7 @@ "confirmdeletetask": "您确定要删除本任务?", "contact": "联系方式", "contactadd": "联系人已被添加至您的手机通讯录中", + "contacts": "联系人", "content": "内容", "contents": "内容", "contentyetnotavailable": "还无法通过APP参与此类活动", @@ -40,6 +46,7 @@ "course": "课程", "coursename": "课程名称", "csssynced": "远程CSS已经同步", + "cutoffdate": "提交截止时间", "date": "日期", "days": "日", "delete": "删除", @@ -50,12 +57,15 @@ "details": "详情", "development": "开发", "deviceinfo": "设备信息", + "disabled": "本站禁止发消息", "disablenotifications": "关闭通知", "disablerdebugger": "关闭远程调试", "discussions": "讨论", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "下载远程文件", "downloadtime": "已经下载", + "duedate": "截止时间", + "duedateno": "无截止时间", "email": "Email", "empty": "空的", "enableautosync": "启用自动同步", @@ -78,12 +88,14 @@ "errorduringdevicetokenrequesttoapns": "请求向APNS发送设备标识符时出错。", "errorlistingfiles": "从本目录提取文件时出错", "errornoconnectednocache": "本设备未连接,没有相关的缓存信息可供用户请求的选项使用。", + "errorreadingfile": "在读取文件“{$a}”时发生错误", "errorregisteringdeviceinmoodle": "在Moodle中注册设备时出错", "errorretrievinggradeinformation": "获取成绩信息时出错", "erroruploading": "上传文件时出错", "estimatedfreespace": "估计的可用空间", "events": "日历事件", "feedback": "反馈", + "file": "文件", "filedownloaded": "文件已下载", "filename": "文件名", "filesize": "大小", @@ -140,6 +152,7 @@ "next": "往后", "no": "否", "noevents": "没有事件", + "nomessagesfound": "没有消息", "norefreshdisconnected": "刷新选项需要联网", "notaskstobesynchronized": "没有要同步的任务", "noteadded": "关注已添加", @@ -148,9 +161,14 @@ "notifications": "通知", "notificationsdisabled": "通知已被禁用", "notificationsenabled": "已启用通知功能,用于您的所有Moodle站点", + "nousersfound": "未找到用户", + "offlinecontacts": "离线联系人 ({$a})", "offlinemode": "离线模式", "ok": "确定", + "onlinecontacts": "在线联系人 ({$a})", "openinbrowser": "在浏览器中打开", + "others": "其它", + "participant": "参与者", "participants": "课程参与者", "password": "密码", "passwordlabel": "密码", @@ -171,6 +189,7 @@ "recordaudio": "音频", "recordstored": "您的录音已保存到您的私人空间。", "remotesystemnotconfiguredfornotifications": "该Moodle站点还未进行发送移动通知设置。如果您认为应当启用通知功能,请联系站点管理员。", + "removecontact": "删除联系人", "replay": "回放", "reply": "回复", "reportabug": "报告bug", @@ -202,6 +221,7 @@ "spaceusage": "空间使用情况", "stop": "停止", "strings": "字符串", + "submissions": "提交信息", "synchronization": "同步", "syncthistasknow": "现在同步本任务", "system": "系统", @@ -218,10 +238,12 @@ "total": "总共", "totalusage": "总共使用空间", "type": "类型", + "unblockcontact": "不再阻拦联系人", "unexpectederror": "意外出错。请关闭并重新打开APP再试一次", "update": "更新", "updatesite": "更新站点", "upload": "上传", + "uploadfile": "上传文件", "uploading": "上传中", "uploadingtoprivatefiles": "正在上传到您的私人文件空间", "uselocalmobileplugin": "如果Moodle站点安装了任意一款移动插件,浏览本页会有更好体验。", @@ -234,6 +256,7 @@ "videostored": "你的视频已保存到您的私人空间", "view": "浏览", "viewableonthisapp": "可在本APP中浏览", + "viewsubmission": "查看提交", "warning": "警告", "webservicesnotenabled": "您的站点未开启网络服务。如果您觉得应当启用移动接入功能,请与站点管理员联系。", "webservicesuccessfullyexecuted": "网络服务已执行成功", diff --git a/lang/zh_tw.json b/lang/zh_tw.json index 4aaaf68bf..990f23c6b 100644 --- a/lang/zh_tw.json +++ b/lang/zh_tw.json @@ -8,8 +8,10 @@ "addnote": "新增筆記", "address": "住址", "addsite": "新增網站", + "addsubmission": "繳交作業", "allcachesinvalidated": "全部快取都廢止了", "allcachespurged": "快取已全數清除", + "allowsubmissionsfromdate": "開始繳交時間", "areyousurereset": "您確定應用程式要重設?先前位置將會全數刪除。", "audionotavailable": "沒有聲音輸入裝置", "audiorecordinstructions": "按下Record來開始錄聲音。按Stop即可停止並將檔案上傳。", @@ -17,6 +19,8 @@ "author": "作者", "average": "平均", "back": "返回", + "blockcontact": "封鎖聯絡人", + "blockedusers": "被封鎖的用戶 ({$a})", "browsephotoalbums": "瀏覽相本", "cacheexpirationtime": "快取到期時間(毫秒)", "cancel": "取消", @@ -24,6 +28,7 @@ "cannotconnect": "無法連接:請確認您輸入之網址正確,且您的位置使用的是Moodle2.4版或更新版本。", "cannotconnectssl": "無法連接:請確認您輸入之網址為正確,且您的位置使用的是Moodle2.4版或更新,且SSL憑證有效。", "cannotsendmessage": "網路無法連接。您的訊息已儲存在任務佇列中。一旦可以連線後,您就可以重新傳送。", + "choosefile": "第一步:選擇檔案", "city": "城市", "close": "關閉", "completed": "完成", @@ -31,6 +36,7 @@ "confirmdeletetask": "您確定要刪除此項任務?", "contact": "連絡人", "contactadd": "連絡人已加到您電話的通訊錄中。", + "contacts": "通訊錄", "content": "內容", "contents": "內容", "contentyetnotavailable": "此型態之活動不能經由手機app找到。", @@ -39,6 +45,7 @@ "course": "課程", "coursename": "課程名稱", "csssynced": "遠端CSS已同步。", + "cutoffdate": "拒收作業時間", "date": "日期", "days": "星期", "delete": "刪除", @@ -49,12 +56,15 @@ "details": "明細", "development": "開發", "deviceinfo": "設備資訊", + "disabled": "傳訊息功能在本站是停用的", "disablenotifications": "關閉通知", "disablerdebugger": "關閉遠端除錯", "discussions": "貼文", "docsurl": "http:\/\/docs.moodle.org\/en\/Mobile_app", "downloadremotefile": "下載遠端檔案", "downloadtime": "已下載", + "duedate": "規定繳交時間", + "duedateno": "沒有規定繳交時間", "email": "電子郵件", "empty": "空白", "enableautosync": "啟用自動同步", @@ -77,12 +87,14 @@ "errorduringdevicetokenrequesttoapns": "設備口令請求到APNS時發生錯誤", "errorlistingfiles": "從這個目錄檢索檔案時發生錯誤", "errornoconnectednocache": "設備未連接,而且這裡沒有這選項查詢的快取資訊。", + "errorreadingfile": "讀取檔案 \"{$a}\" 時發生錯誤", "errorregisteringdeviceinmoodle": "於Moodle登錄設備時有誤", "errorretrievinggradeinformation": "取回成績資訊時發生錯誤", "erroruploading": "上傳檔案時出錯", "estimatedfreespace": "估計尚餘空間", "events": "行事曆", "feedback": "回饋", + "file": "檔案", "filedownloaded": "檔案已下載", "filename": "檔名", "filesize": "大小", @@ -138,6 +150,7 @@ "networkerrormsg": "網路未啟用或未運作。", "next": "繼續", "no": "否", + "nomessagesfound": "沒有找到簡訊", "norefreshdisconnected": "更新功能需要網路連線", "notaskstobesynchronized": "沒有同步的任務", "noteadded": "筆記已加入", @@ -147,8 +160,13 @@ "notificationsdisabled": "通知功能已停用", "notificationsenabled": "您全部的Moodle網站啟用通知功能。", "notificationshowtoenable": ".", + "nousersfound": "找不到用戶", + "offlinecontacts": "離線的聯絡人 ({$a})", "offlinemode": "離線模式", "ok": "好", + "onlinecontacts": "在線上的聯絡人 ({$a})", + "others": "其他", + "participant": "參與者", "participants": "參與者", "password": "密碼", "passwordlabel": "密碼", @@ -169,6 +187,7 @@ "recordaudio": "錄製聲音", "recordstored": "您的錄音已儲存在您的私人檔案區。", "remotesystemnotconfiguredfornotifications": "您Moodle並未設定好傳送行動裝置通知。如果您覺得須啟用通知功能請連絡Moodle入口網站管理員。", + "removecontact": "刪除聯絡人", "replay": "回覆", "reply": "回覆", "reportabug": "回報問題", @@ -200,6 +219,7 @@ "spaceusage": "使用空間", "stop": "停止", "strings": "字串", + "submissions": "繳交", "synchronization": "同步", "syncthistasknow": "立即同步此任務", "system": "系統", @@ -215,10 +235,12 @@ "total": "總計", "totalusage": "總用量", "type": "類型", + "unblockcontact": "不再封鎖聯絡", "unexpectederror": "無法預期的錯誤。請關閉並重新開啟應用程式,再試一次。", "update": "更新", "updatesite": "更新網站", "upload": "上傳", + "uploadfile": "上傳檔案", "uploading": "上傳中", "uploadingtoprivatefiles": "上傳到您的私人檔案區", "uselocalmobileplugin": "當Moodle網站有安裝選用的Mobile外掛時,頁面會運作得更好。", @@ -231,6 +253,7 @@ "videostored": "您的影片已儲存在您的私人檔案區", "view": "瀏覽", "viewableonthisapp": "在這APP可看見的", + "viewsubmission": "檢視繳交的作業", "warning": "警告", "webservicesnotenabled": "您的網站沒有啟用Web服務。如果您想用行動裝置連線,請聯繫您的Moodle網站管理員。", "webservicesuccessfullyexecuted": "Web服務執行成功", diff --git a/less/layout.less b/less/layout.less index 07777c24b..3201c81b0 100755 --- a/less/layout.less +++ b/less/layout.less @@ -5,7 +5,8 @@ body { } #add-site, -#manage-accounts { +#manage-accounts, +.full-screen-dialog .modalContent { margin: 0 auto; width: 90%; } @@ -71,11 +72,17 @@ body { width: 100%; } +.full-screen-dialog.choose-account .modalContent { + height: 100%; + overflow: auto; +} + /* - Tablet minimum width 768px -------------------------------------------------------------------------- */ .tablet { #add-site, - #manage-accounts { + #manage-accounts, + .full-screen-dialog .modalContent { width: 70%; } @@ -99,4 +106,5 @@ body { padding: 0px; display: block; } + } diff --git a/less/styles.less b/less/styles.less index cf3d53c23..b8925d5ee 100755 --- a/less/styles.less +++ b/less/styles.less @@ -32,17 +32,27 @@ @headerBorder: 0; @headerBoxShadow: 10px 0 20px rgba(0, 0, 0, 0.3); +@subHeaderBoxShadow: 0 0 10px rgba(0, 0, 0, 0.1); + //-----Content----- @contentBackground: #fff; @textColor: #666; @linkColor: #08c; -@headingsColor: @textColor; @sectionHeadingColor: @textColor; @sectionHeadingTextShadow: 0px 1px 1px rgba(0, 0, 0, 0.2); @sectionHeadingBackground: #eee; + +//-----Messages----- +@messageBackground: @contentBackground; + +@bubbleBackground: #fff; +@bubbleBackgroundAlt: #fff; +@bubbleBorder: rgba(0,0,0,0.3); +@bubbleBorderAlt: rgba(250,143,28,1); + /* Font Icon --------------------------------------------------------*/ @font-face { @@ -89,8 +99,8 @@ html { body { color: @textColor; font-family: Helvetica, sans-serif; - font-size: 14px; - font-size: .875rem; + font-size: 16px; + font-size: 1rem; line-height: 24px; background: @bodyBackground; } @@ -126,11 +136,17 @@ ol { h1 { font-size: 18px; font-size: 1.125rem; - color: @headingsColor; - margin: 5px 0 0; + font-weight: normal; } h2 { + font-size: 17px; + font-size: 1.0625rem; + font-weight: normal; + text-shadow: @sectionHeadingTextShadow; +} + +h3 { color: @sectionHeadingColor; font-size: 100%; font-weight: normal; @@ -142,6 +158,21 @@ h2 { background-color: @sectionHeadingBackground; } +h4 { + font-size: 15px; + font-size: 0.9375rem; +} + +h5 { + font-size: 14px; + font-size: 0.875; +} + +h6 { + font-size: 13px; + font-size: 0.8125rem; +} + b, strong { font-weight: bold; @@ -485,13 +516,14 @@ hr { } } -#manage-accounts { +#manage-accounts, #app-dialog { .accounts { display: block; background-color: #fff; border-radius: 4px; padding: 10px; margin-bottom: 15px; + min-height: 120px; } .account-details { color: @textColor; @@ -547,7 +579,6 @@ hr { color: @headerTextColor; height: 44px; line-height: 44px; - padding-right: 20px; overflow: hidden; background: @headerBackground; border-bottom: @headerBorder; @@ -566,21 +597,51 @@ hr { } } } + .menu-home { + background-image: url(../img/ico-menu.png); + } + .menu-back { + background-image: url(../img/ico-back.png); + } + #page-title { + text-shadow: @headerTextShadow; + letter-spacing: .5px; + display: block; + text-align: center; + padding-left: 10px; + padding-right: 10px; + overflow: hidden; + } } -#page-title { - font-size: 16px; - font-size: 1rem; - text-shadow: @headerTextShadow; - letter-spacing: .5px; -} - -.menu-home { - background-image: url(../img/ico-menu.png); -} - -.menu-back { - background-image: url(../img/ico-back.png); +.header-sub { + padding-top: 10px; + padding-bottom: 10px; + min-height: 44px; + box-shadow: @subHeaderBoxShadow; + .back-row { + float: left; + margin-bottom: 10px; + margin-left: 5px; + display: block; + a { + padding: 10px; + } + } + h2 { + margin-bottom: 0; + overflow: hidden; + .img { + margin-top: 5px; + } + } + #tablet-page-title, + #back-arrow-title { + display: table; + margin: 0 auto; + padding-left: 10px; + padding-right: 10px; + } } /* - Common on three panels @@ -621,10 +682,11 @@ hr { border-radius: 50%; } h1 { + font-size: 20px; + font-size: 1.25rem; color: @menuHeaderTextColor; text-shadow: @menuHeaderTextShadow; - font-weight: normal; - line-height: 20px; + margin: 5px 0 0; } } h2 { @@ -736,7 +798,12 @@ hr { width: 100%; position: relative; header { - padding: 10px; + border-top: 1px solid #eee; + box-shadow: @subHeaderBoxShadow; + h2 { + padding: 10px; + margin-bottom: 0; + } } section:last-of-type { border-bottom: 1px solid #eee; @@ -754,7 +821,7 @@ hr { width: 100%; } .content-name { - a { + > a { display: block; padding: 10px; } @@ -764,12 +831,23 @@ hr { } &.mod-label { overflow: auto; - h3 { - font-size: 100%; - font-weight: normal; - margin: 0; + a > div { padding-right: 80px; - }; + h1, + h2, + h3, + h4, + h5, + h6 { + color: @textColor; + font-weight: bold; + line-height: inherit; + letter-spacing: 0; + background-color: transparent; + text-shadow: none; + padding: 0; + } + } img { width: auto; } @@ -853,12 +931,6 @@ hr { word-wrap: break-word; } -//-----Folder, Forum discussions and My files----- -.back-row a { - display: block; - padding: 10px; -} - //-----Forum discussions----- .path-mod-forum { .forum { @@ -872,8 +944,8 @@ hr { } } .intro { - margin-left: 32px; - padding: 0 10px 10px; + padding: 10px; + margin-left: 4px; } .first-post { > .subject { @@ -883,9 +955,6 @@ hr { .forum-post { padding-top: 10px; border-bottom: 1px solid #eee; - &:first-of-type { - border-top: 1px solid #eee; - } &:last-child { border-bottom: 0; } @@ -921,6 +990,10 @@ hr { .content { padding: 0 10px 10px; margin-left: 50px; + &:first-of-type { + padding-top: 10px; + margin-left: 4px; + } ul, ol { margin-left: 20px; @@ -974,27 +1047,120 @@ hr { } } &.forum-discussion { - .first-post { - border-top: 15px solid #eee; - border-bottom: 1px solid #eee; - } .indent { border-top: 15px solid #eee; } } } +//-----Assignment----- +.path-mod-assign { + .intro { + padding: 10px; + margin-left: 4px; + } + .info { + padding: 10px 10px 10px 0; + border-top: 1px solid #eee; + margin-left: 14px; + p { + display: table-row; + } + span { + display: table-cell; + padding-right: 20px; + text-align: right; + } + time { + font-size: .9375rem; + display: table-cell; + } + } + .post { + padding-top: 10px; + border-bottom: 15px solid #eee; + } + .header { + line-height: 20px; + padding-right: 10px; + padding-bottom: 5px; + } + .user-picture { + width: 40px; + height: 40px; + border-radius: 50%; + float: left; + margin-left: 10px; + margin-right: 10px; + } + .author-name { + display: block; + } + time { + font-size: .75rem; + color: #888; + display: inline; + } + .status { + float: right; + } + .content { + padding: 0 10px 10px; + margin-left: 50px; + clear: right; + border-top: 1px solid #eee; + p { + padding-top: 10px; + } + } + .attachments { + .attachment { + padding-top: 10px; + } + .content-name { + a { + padding: 0; + line-height: 20px; + margin-top: 2px; + color: @textColor; + } + } + .content-actions { + width: 40px; + padding: 0; + } + } + .paging-bar { + padding: 6px 10px; + a, + .current { + display: inline-block; + padding: 2px 6px; + margin: 4px; + } + } +} //-----My Files----- -.fullpath { - width: 100%; - background-color: #eee; - position: fixed; - bottom: 0; - padding: 4px 10px; - p { - margin-bottom: 0; - line-height: 20px; +.content-index { + .back-row { + padding-top: 10px; + padding-bottom: 10px; + margin-left: 5px; + a { + padding: 10px; + } + } + .fullpath { + width: 100%; + background-color: #eee; + position: fixed; + bottom: 0; + padding: 4px 10px; + p { + margin-bottom: 0; + line-height: 20px; + } } } @@ -1002,6 +1168,18 @@ hr { .messages, .notifications { padding: 10px; + .no-content { + display: table; + position: absolute; + width: 100%; + height: 100%; + text-align: center; + margin-left: -10px; + p { + display: table-cell; + vertical-align: middle; + } + } } .message, @@ -1042,6 +1220,185 @@ hr { } } +//-----Messages----- +.path-messages { + &.recent-messages { + img { + width: 40px; + height: 40px; + border-radius: 50%; + } + p { + font-weight: bold; + line-height: 20px; + margin: 0; + } + .preview { + font-weight: normal; + } + } + .conversation { + background-color: @messageBackground; + position: absolute;; + margin-right: 50px; + .conversation-area { + padding: 15px; + overflow-y: scroll; + .datestamp { + text-align: center; + margin-bottom: 10px; + clear: both; + span { + color: #fff; + font-size: .75rem; + font-weight: bold; + background-color: #c9c9c9; + padding: 2px 10px; + border-radius: 10px; + } + } + .bubble { + line-height: 20px; + word-wrap: break-word; + padding: 6px 12px; + margin-bottom: 10px; + width: auto; + max-width: 90%; + background: @bubbleBackground; + border: 1px solid @bubbleBorder; + border-radius: 6px; + float: left; + clear: both; + position: relative; + &:before, + &:after { + content: ""; + display: block; + position: absolute; + border-style: solid; + border-color: transparent; + } + &:before { + border-width: 8px; + border-right-color: @bubbleBorder; + top: 8px; + left: -16px; + } + &:after { + border-width: 7px; + border-right-color: @bubbleBackground; + top: 9px; + left: -14px; + } + } + .bubble-alt { + background-color: @bubbleBackgroundAlt; + border-color: @bubbleBorderAlt; + float: right; + &:before { + border-color: transparent; + border-left-color: @bubbleBorderAlt; + left: auto; + right: -16px; + } + &:after { + border-color: transparent; + border-left-color:@bubbleBackgroundAlt; + left: auto; + right: -14px; + } + } + .time { + color: #999; + font-size: .65rem; + float: right; + padding-left: 8px; + padding-top: 2px; + } + } + .input-area { + padding: 8px 10px; + background-color: #eee; + border-top: 1px solid #ccc; + display: block; + width: 100%; + form { + > div { + position: relative; + margin-right: 60px; + } + input { + display: block; + line-height: 20px; + padding: 6px 6px 4px; + } + input[type="text"] { + width: 100%; + border: 1px solid #eee; + } + input[type="submit"] { + color: @linkColor; + font-weight: bold; + background: transparent; + border: none; + position: absolute; + top: 0px; + left: 100%; + width: 50px; + margin-left: 10px; + } + } + } + } + &.contacts { + input[type="search"] { + width: 100%; + margin: 10px 0; + } + .nav-item > a { + padding-top: 6px; + } + img { + width: 30px; + height: 30px; + border-radius: 50%; + } + p { + line-height: 30px; + margin: 0; + } + } + &.contact { + border-top: 1px solid #eee; + .media { + padding-left: 20px; + padding-right: 20px; + padding-bottom: 40px; + padding-top: 20px; + .img { + display: block; + vertical-align: baseline; + } + img { + width: 50px; + height: 50px; + border-radius: 50%; + vertical-align: bottom; + } + .bd { + font-size: 1rem; + } + } + .nav-item { + padding-left: 15px; + padding-right: 15px; + a { + color: @linkColor; + } + } + } +} + //-----Calendar----- .events-list { .name { @@ -1059,7 +1416,7 @@ hr { } .event { - border-bottom: 1px solid #e0e0e0; + border-bottom: 1px solid #eee; header { padding: 10px; img { @@ -1068,25 +1425,29 @@ hr { } > div { padding: 10px; - border-top: 1px solid #e0e0e0; + border-top: 1px solid #eee; overflow: hidden; } .date, - .course { + .course, + .option { p { - padding-left: 26px; margin-bottom: 0; } + .time { + font-size: 12px; + } + input { + margin-right: 8px; + } } - .time { - font-size: 12px; - } - .app-ico img { - width: 18px; - height: auto; + .media { + .app-ico img { + width: 18px; + height: auto; + } } .description { - padding-left: 36px; img { margin: 20px 0 20px 20px; } @@ -1178,6 +1539,7 @@ hr { /* - Participant on the right panel and Notification page on the center panel -------------------------------------------------------------------------- */ .user-card { + border-top: 1px solid #eee; .content { border-bottom: 1px solid #eee; } @@ -1195,7 +1557,9 @@ hr { position: absolute; bottom: 0; padding-left: 110px; - h1 { + p { + font-size: 18px; + font-size: 1.125rem; margin-bottom: 12px; } } @@ -1224,6 +1588,7 @@ hr { /* - Settings on the right panel -------------------------------------------------------------------------- */ .settings { + border-top: 1px solid #eee; .nav-item { padding: 10px; } @@ -1308,16 +1673,19 @@ hr { //-----About----- .settings { - header { - padding: 10px; - } .about { border-collapse: collapse; line-height: 20px; width: 100%; + thead th { + padding-top: 10px; + padding-bottom: 10px; + } th { + font-weight: normal; text-align: left; - padding: 0 10px; + padding-left: 10px; + padding-right: 10px; } td { padding: 10px; @@ -1331,9 +1699,6 @@ hr { text-shadow: @sectionHeadingTextShadow; background-color: @sectionHeadingBackground; border-bottom: 1px solid @contentBackground; - th { - font-weight: normal; - } } } } @@ -1547,6 +1912,11 @@ div.jqi { /* - Tablet minimum width 768px -------------------------------------------------------------------------- */ .tablet { + .path-messages { + .conversation { + margin-right: 0; + } + } .grades { thead { display: table-header-group; @@ -1590,7 +1960,7 @@ div.jqi { border-collapse: collapse; line-height: 20px; width: 100%; - border-top: 1px solid #e0e0e0; + border-top: 1px solid #eee; tr { border-bottom: 1px solid #eee; } @@ -1673,3 +2043,42 @@ div.jqi { background-color: #fff; } } +/* - Upload file (Android) +-------------------------------------------------------------------------- */ +.uploadinstructions { + padding: 10px; +} +.uploadfilecontainer { + position: relative; +} +.uploadfilecontainer input[type=file] { + position: absolute; + top: 0; + right: 0; + min-width: 100%; + min-height: 100%; + opacity: 0; + outline: none; +} +/* - Full screen dialog +-------------------------------------------------------------------------- */ +#app-dialog.full-screen-dialog { + >div { + width: 100% !important; + height: 100%; + margin-top: 0 !important; + background-color: #fa8f1c; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + } + .modalHeader { + display: none; + } + .modalContent { + color: #fff; + } + .modalFooter { + border-top: 0px; + } +} diff --git a/lib/mm.db.js b/lib/mm.db.js index 52ac1867b..197bd9975 100755 --- a/lib/mm.db.js +++ b/lib/mm.db.js @@ -42,6 +42,14 @@ MM.db = { MM.collections[collection].each(fn); }, insert: function(collection, model) { + // Insert allways the current site identifier. + if (typeof model.site == "undefined" && + MM.config && + MM.config.current_site && + MM.config.current_site.id) { + + model.site = MM.config.current_site.id; + } return MM.collections[collection].create(model); }, remove: function(collection, modelId) { diff --git a/lib/mm.emulator.js b/lib/mm.emulator.js index ec3dda16e..565522de1 100755 --- a/lib/mm.emulator.js +++ b/lib/mm.emulator.js @@ -55,11 +55,14 @@ MM.cordova = { // Notifications window.plugins = {}; + window.plugin = {}; // Connection API. window.Connection = { "NONE": 0, - "WIFI": 1 + "WIFI": 1, + "CELL_2G": 2, + "CELL_3G": 3 }; navigator.network = { @@ -114,6 +117,29 @@ MM.cordova = { PERSISTENT: 1 }; + window.plugin.notification = { + local: {} + }; + + // Local storage for notifications, just for testing. + window.plugin.notification.local.notifications = {}; + + window.plugin.notification.local.add = function(n) { + console.log("Notification created: date " + n.date.toLocaleString()); + window.plugin.notification.local.notifications[n.id] = n; + }; + + window.plugin.notification.local.cancel = function(id) { + console.log("Notification with id: " + id + " cancelled"); + delete window.plugin.notification.local.notifications[id]; + }; + + window.plugin.notification.local.cancelAll = function() { + console.log("All local notifications cancelled"); + window.plugin.notification.local.notifications = {}; + }; + + // Check with API wrapper we should load. if (MM.inNodeWK) { MM.cordova.loadNodeJSAPI(); @@ -300,9 +326,48 @@ MM.cordova = { */ loadNodeJSAPI: function() { + var guid = (function() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); + } + return function() { + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + + s4() + '-' + s4() + s4() + s4(); + }; + })(); + + // Device data + var os = require('os'); + + window.device = { + name: os.hostname(), + model: os.type(), + platform: os.platform(), + version: os.release(), + uuid: os.hostname()+guid() // It will change everytime. It should be stored in LocalStorage. + }; + // File API // http://docs.phonegap.com/en/3.3.0/cordova_file_file.md.html#File + var getFileName = function( path ) { + if( path.indexOf('/') > -1 ) { + return path.substr(path.lastIndexOf('/') + 1); + } else { + return path; + } + }; + + var getNewFullPath = function( fullPath, subPath ) { + if(subPath.indexOf(fullPath) == -1) { + return fullPath + "/" + subPath; + } else { + return subPath; + } + }; + var DirectoryEntry = function(name, fullPath) { this.isFile = false; this.isDirectory = true; @@ -324,6 +389,26 @@ MM.cordova = { this.fullPath = fullPath; }; + var FileWriter = function(fullPath) { + this.fullPath = fullPath; + }; + + FileWriter.prototype.write = function(data) { + var fs = require('fs'); + + var self = this; + fs.writeFile(this.fullPath, data, function(err) { + if(err) { + if(self.onerror) { + self.onerror(err); + } + } else if(self.onwrite) { + self.onwrite(); + } + }); + + }; + DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) { var fs = require('fs'); var entries = []; @@ -332,7 +417,11 @@ MM.cordova = { var i = 0; for (i=0; i< files.length; i++) { - var fullPath = this.fullPath + '/' + files[i]; + if(this.fullPath.slice(-1) == '/' ) { + var fullPath = this.fullPath + files[i]; + } else { + var fullPath = this.fullPath + '/' + files[i]; + } var stat = fs.statSync(fullPath); if (stat.isDirectory()) { entries.push(new DirectoryEntry(files[i], fullPath)); @@ -369,53 +458,137 @@ MM.cordova = { try { deleteFolderRecursive(this.fullPath); } catch(err) { - errorCallback(); + if(errorCallback) { + errorCallback(); + } return; } - successCallback(); + if(successCallback) { + successCallback(); + } }; DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) { var fs = require('fs'); - var newFullPath = this.fullPath + "/" + path; - if (options.create) { + var filename = getFileName(path); + var newFullPath = getNewFullPath(this.fullPath, path); + + var self = this; + + if (fs.existsSync(newFullPath) && fs.statSync(newFullPath).isDirectory()) { + var entry = new DirectoryEntry(filename, newFullPath); + successCallback(entry); + } + else if (options.create) { fs.mkdir(newFullPath, function(e) { - if(!e || (e && e.code === 'EEXIST')){ - var entry = new DirectoryEntry(path, newFullPath); + if(!e || (e && e.code === 'EEXIST')) { + var entry = new DirectoryEntry(filename, newFullPath); successCallback(entry); - } else { + } else if(e && e.code === 'ENOENT') { + // If it doesn't exist, try to create it + var parent = newFullPath.substring(0, newFullPath.lastIndexOf('/') ); + if(parent != '') { + self.getDirectory(parent, options, function(dirEntry) { + fs.mkdir(newFullPath, function(e) { + if(!e || (e && e.code === 'EEXIST')) { + var entry = new DirectoryEntry(filename, newFullPath); + successCallback(entry); + } else if(errorCallback) { + errorCallback(); + } + }); + }, errorCallback); + } else if(errorCallback) { + errorCallback(); + } + + } else if(errorCallback) { errorCallback(); } }); - } else { - if (fs.existsSync(newFullPath) && fs.statSync(newFullPath).isDirectory()) { - var entry = new DirectoryEntry(path, newFullPath); - successCallback(entry); - } else { - errorCallback(); - } + } else if(errorCallback) { + errorCallback(); } }; DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) { var fs = require('fs'); - var filePath = this.fullPath + "/" + path; - if (options.create) { - //Not implemented. - errorCallback(); - } else { - fs.stat(filePath, function (err, stats) { - if (stats.isFile()) { - var entry = new FileEntry(path, filePath); + var filename = getFileName(path); + var newFullPath = getNewFullPath(this.fullPath, path); + + var self = this; + + if (fs.existsSync(newFullPath) && fs.statSync(newFullPath).isFile()) { + var entry = new FileEntry(filename, newFullPath); + successCallback(entry); + } + else if (options.create) { + fs.writeFile(newFullPath, "", function(e) { + if(!e || (e && e.code === 'EEXIST')) { + var entry = new FileEntry(filename, newFullPath); successCallback(entry); - return; + } else if(e && e.code === 'ENOENT') { + var parent = newFullPath.substring(0, newFullPath.lastIndexOf('/') ); + if(parent != '') { + self.getDirectory(parent, options, function(dirEntry) { + fs.writeFile(newFullPath, function(e) { + if(!e || (e && e.code === 'EEXIST')) { + var entry = new FileEntry(filename, newFullPath); + successCallback(entry); + } else if(errorCallback) { + errorCallback(); + } + }); + }, errorCallback); + }else if(errorCallback) { + errorCallback(); + } + + }else if(errorCallback) { + errorCallback(); } - errorCallback(); }); + } else if(errorCallback) { + errorCallback(); } }; + + DirectoryEntry.prototype.getParent = function(successCallback, errorCallback) { + var fs = require('fs'); + + var parentPath = this.fullPath.substr(0, this.fullPath.lastIndexOf('/') ); + var parentName = getFileName(parentPath); + + if (fs.existsSync(parentPath) && fs.statSync(parentPath).isDirectory()) { + var entry = new DirectoryEntry(parentName, parentPath); + successCallback(entry); + } else { + if(errorCallback) + errorCallback(); + } + + }; + + DirectoryEntry.prototype.moveTo = function (parent, newName, successCallback, errorCallback) { + var fs = require('fs'); + + var newPath = getNewFullPath(parent.fullPath, newName); + + fs.rename(this.fullPath, newPath, + function(err) { + if(err) { + if(errorCallback) + errorCallback(err); + } + else { + if(successCallback) + successCallback( new DirectoryEntry(newName, newPath) ); + } + }); + }; + DirectoryEntry.prototype.toNativeURL = function () { return this.fullPath; }; @@ -423,17 +596,143 @@ MM.cordova = { return this.fullPath; }; - FileEntry.prototype.file = function(successCallback, errorCallback) { - successCallback(this); + DirectoryEntry.prototype.setMetadata = function (successCallback, errorCallback, metadataObject) { + // Not implemented + errorCallback(); + }; + + DirectoryEntry.prototype.getMetadata = function (successCallback, errorCallback) { + var fs = require('fs'); + + fs.statSync(this.fullPath, function(err, stats) { + if(err){ + if(errorCallback) + errorCallback(); + }else{ + successCallback({modificationTime: stats.mtime}); + } + }); + }; + + FileEntry.prototype.setMetadata = function (successCallback, errorCallback, metadataObject) { + // Not implemented + errorCallback(); + }; + + FileEntry.prototype.getMetadata = function (successCallback, errorCallback) { + var fs = require('fs'); + + fs.statSync(this.fullPath, function(err, stats) { + if(err){ + if(errorCallback) + errorCallback(); + }else{ + successCallback({modificationTime: stats.mtime}); + } + }); }; FileEntry.prototype.toNativeURL = function () { return this.fullPath; }; - FileEntry.prototype.toURL = function () { + FileEntry.prototype.toURL = function () { return this.fullPath; }; + FileEntry.prototype.file = function(successCallback, errorCallback, returnAsBlob) { + if(returnAsBlob) { + var fs = require('fs'); + fs.readFile(this.fullPath, function(err, data) { + if(err) { + if(errorCallback) + errorCallback(); + } else { + successCallback(new Blob([data], {type: "application/zip"})); + } + }); + } else { + var file = this; + file.start = 0; + file.end = this.size; + file.localURL = this.fullPath; + successCallback(file); + } + }; + + FileEntry.prototype.getParent = function(successCallback, errorCallback) { + var fs = require('fs'); + + var parentPath = this.fullPath.substr(0, this.fullPath.lastIndexOf('/') ); + var parentName = getFileName(parentPath); + + if (fs.existsSync(parentPath) && fs.statSync(parentPath).isDirectory()) { + var entry = new DirectoryEntry(parentName, parentPath); + successCallback(entry); + } else { + if(errorCallback) + errorCallback(); + } + }; + + FileEntry.prototype.moveTo = function (parent, newName, successCallback, errorCallback) { + var fs = require('fs'); + + var newPath = getNewFullPath(parent.fullPath, newName); + + fs.rename(this.fullPath, newPath, + function(err) { + if(err) { + if(errorCallback) + errorCallback(err); + } + else { + if(successCallback) + successCallback( new FileEntry(newName, newPath) ); + } + }); + }; + + FileEntry.prototype.remove = function(successCallback, errorCallback) { + var fs = require('fs'); + + fs.unlink(this.fullPath, function(err) { + if(err) { + if(errorCallback) + errorCallback({code: -666}); + } + else if(successCallback) { + successCallback(); + } + }); + }; + + FileEntry.prototype.createWriter = function (successCallback, errorCallback) { + successCallback( new FileWriter(this.fullPath) ); + }; + + var getBasePath = function() { + if(device.platform.indexOf('win') > -1 && typeof(process.env.USERPROFILE) != 'undefined' + && process.env.USERPROFILE.match(/^[A-Z]/)) { + // In Windows we'll try to use USERPROFILE if it's valid. + var basePath = process.env.USERPROFILE; + } + else { + // In Windows, some variables were treated as valid but their value was '\'. Skip these. + if( typeof(process.env.HOME) != 'undefined' && process.env.HOME != '\\' ) { + var basePath = process.env.HOME; + } else if( typeof(process.env.HOMEPATH) != 'undefined' && process.env.HOMEPATH != '\\' ) { + var basePath = process.env.HOMEPATH; + } else if( typeof(process.env.USERPROFILE) != 'undefined' && process.env.USERPROFILE != '\\' ) { + var basePath = process.env.USERPROFILE; + } else { + return undefined; + } + + } + + return basePath.replace(/\\/g, "/"); // We'll always use / instead of \ + }; + window.requestFileSystem = function(type, size, successCallback, errorCallback) { var fs = require('fs'); @@ -443,7 +742,12 @@ MM.cordova = { return; } - var basePath = process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE; + var basePath = getBasePath(); + if( typeof(basePath) == 'undefined' ) { + errorCallback(); + return; + } + var rootPath = basePath + "/" + MM.config.app_id; fs.mkdir(rootPath, function(e) { @@ -459,25 +763,92 @@ MM.cordova = { }); }; + window.resolveLocalFileSystemURL = function(path, successCallback, errorCallback) { + var fs = require('fs'); + + if (fs.existsSync(path)) { + + var filename = getFileName(path); + + if(fs.statSync(path).isFile()) { + var entry = new FileEntry(filename, path); + successCallback(entry); + } else { + var entry = new DirectoryEntry(filename, path); + successCallback(entry); + } + } else if(errorCallback) { + errorCallback(); + } + }; + // FileTransfer API. window.FileTransfer = function() {}; + function toBuffer(ab) { + var buffer = new Buffer(ab.byteLength); + var view = new Uint8Array(ab); + for (var i = 0; i < buffer.length; ++i) { + buffer[i] = view[i]; + } + return buffer; + }; + // Download files using Node.js http client. window.FileTransfer.prototype.download = function(url, filePath, successCallback, errorCallback, options, debug) { - var http = require('http'); - var fs = require('fs'); + // We use XMLHttpRequest instead of http module because that didn't work in some Windows XP - var file = fs.createWriteStream(filePath); - var request = http.get(url, function(response) { - response.pipe(file); - file.on('finish', function() { - file.close(); - var entry = new DirectoryEntry(filePath, filePath); - successCallback(entry); - }); - }).on('error', function(e) { - errorCallback(); - }); + try{ + var self = this; + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = 'arraybuffer'; + + this.xhr = xhr; + + xhr.onload = function(e) { + + MM.fs.fileSystemRoot.getFile(filePath, {create: true}, function(fileEntry) { + fileEntry.createWriter(function(writer) { + writer.onerror = function(e) { + if(errorCallback) { + errorCallback({source: url, target: filePath, code: err}); + } + }; + writer.onwrite = function() { + self.xhr = null; + successCallback(fileEntry); + }; + writer.write(toBuffer(xhr.response)); + }, function(e) { + if(errorCallback) { + errorCallback({source: url, target: filePath, code: -1}); + } + }); + }, function(e) { + if(errorCallback) { + errorCallback({source: url, target: filePath, code: -1}); + } + }); + }; + + if(this.onprogress) { + xhr.onprogress = this.onprogress; + } + + xhr.send(); + + }catch(err) { + if(errorCallback) { + errorCallback({source: url, target: filePath, code: err.message}); + } + } + }; + + window.FileTransfer.prototype.abort = function() { + if(typeof(this.xhr) != 'undefined' && this.xhr != null) { + this.xhr.abort(); + } }; // Upload files using standard HTTP POST request. @@ -626,7 +997,8 @@ MM.cordova = { var audiofiles = []; audiofiles.push({ name: filename, - fullPath: tmpPath + fullPath: tmpPath, + localURL: tmpPath }); MM.widgets.dialogClose(); captureSuccess(audiofiles); diff --git a/lib/mm.fs.js b/lib/mm.fs.js index e7d99b80f..be73b4582 100755 --- a/lib/mm.fs.js +++ b/lib/mm.fs.js @@ -81,7 +81,8 @@ MM.fs = { var path = MM.fs.entryURL(MM.fs.fileSystemRoot); // Android 4.2 and onwards //path = path.replace("storage/emulated/0", "sdcard"); - return path; + // Delete last / if present. + return path.replace(/\/$/, ''); } }, @@ -102,7 +103,7 @@ MM.fs = { var msg = 'Critical error accessing file system, directory ' + MM.fs.basePath + ' can\'t be created'; MM.log(msg, "FS"); if (err) { - console.log("Error dump", "FS"); + //console.log("Error dump", "FS"); } MM.popErrorMessage(msg); } @@ -194,6 +195,32 @@ MM.fs = { ); }, + /** + * Remove a file + * @param {string} path The relative path of the file + * @param {object} successCallback Success callback function + * @param {object} errorCallback Error callback function + */ + removeFile: function(path, successCallback, errorCallback) { + MM.log('FS: Removing file ' + path, 'FS'); + + var baseRoot = MM.fs.fileSystemRoot; + if (!baseRoot) { + if(errorCallback) { + errorCallback(); + } + return; + } + baseRoot.getFile( + path, + {create: false, exclusive: false}, + function(fileEntry) { + fileEntry.remove(successCallback, errorCallback); + }, + errorCallback + ); + }, + /** * Recursive and asynchronous function for calculating the size of a directory. * We use several controls global vars in order to know when the algorithm has finished. @@ -404,7 +431,8 @@ MM.fs = { }, function() { errorCallBack(2); - } + }, + MM.inNodeWK ); }, function() { @@ -514,5 +542,48 @@ MM.fs = { else{ baseRoot.getFile(filename, {create: true}, successCallBack, errorCallBack); } + }, + + /** + * Gets a file that might be outside the app's folder. + * + * @param {String} fileURI Path to the file to get. + * @param {object} successCallBack Function to be called when the file is retrieved. + * @param {object} errorCallBack Function to be called when an error occurs. + */ + getExternalFile: function(fileURI, successCallBack, errorCallBack) { + window.resolveLocalFileSystemURL(fileURI, successCallBack, errorCallBack); + }, + + /** + * Remove a file that might be outside the app's folder. + * @param {string} path The absolute path of the file + * @param {object} successCallback Success callback function + * @param {object} errorCallback Error callback function + */ + removeExternalFile: function(path, successCallback, errorCallback) { + MM.log('FS: Removing file ' + path, 'FS'); + + MM.fs.getExternalFile(path, function(fileEntry){ + fileEntry.remove(successCallback, errorCallback); + }, errorCallback); + }, + + /** + * Reads a file as an ArrayBuffer. + * + * @param {String} file File to read. + * @param {object} successCallback Function to be called when the file is retrieved. + * @param {object} errorCallback Function to be called when an error occurs. + */ + readFileAsArrayBuffer: function(file, successCallback, errorCallback) { + var reader = new FileReader(); + reader.onloadend = function (evt) { + successCallback(evt.target.result); + }; + reader.onerror = function() { + errorCallback(); + }; + reader.readAsArrayBuffer(file); } }; \ No newline at end of file diff --git a/lib/mm.js b/lib/mm.js index a09387294..65b7af7d7 100755 --- a/lib/mm.js +++ b/lib/mm.js @@ -46,6 +46,15 @@ var MM = { currentService: "", webWorker: null, blobWorker: null, + /** @type {Object} Use non-deprecated functions when possible */ + deprecatedFunctions: { + "moodle_webservice_get_siteinfo": "core_webservice_get_site_info", + "moodle_enrol_get_users_courses": "core_enrol_get_users_courses", + "moodle_notes_create_notes": "core_notes_create_notes", + "moodle_message_send_instantmessages": "core_message_send_instant_messages", + "moodle_user_get_users_by_courseid": "core_enrol_get_enrolled_users", + "moodle_user_get_course_participants_by_id": "core_user_get_course_user_profiles", + }, /** * Initial setup of the app: device type detection, routes, models, settings. @@ -75,13 +84,8 @@ var MM = { * Set which events we should bind interaction handlers to. */ setEventTypes: function() { - if (MM.util.isTouchDevice()) { - MM.clickType = 'touchend'; - MM.quickClick = 'touchstart'; - } else { MM.clickType = 'click'; MM.quickClick = 'click'; - } }, /** @@ -230,14 +234,20 @@ var MM = { sites: {type: 'collection', model: 'site'}, course: {type: 'model'}, courses: {type: 'collection', model: 'course'}, + group: {type: 'model'}, + groups: {type: 'collection', model: 'group'}, user: {type: 'model'}, users: {type: 'collection', model: 'user'}, + usergroup: {type: 'model'}, + usergroups: {type: 'collection', model: 'usergroup'}, cacheEl: {type: 'model'}, cache: {type: 'collection', model: 'cacheEl'}, syncEl: {type: 'model'}, sync: {type: 'collection', model: 'syncEl'}, service: {type: 'model'}, - services: {type: 'collection', model: 'service'} + services: {type: 'collection', model: 'service'}, + user: {type: 'model'}, + users: {type: 'collection', model: 'user'} }; this.loadModels(storage); }, @@ -294,6 +304,22 @@ var MM = { return connected; }, + deviceWifiConnected: function() { + // If we are in computer, return if the device is just connected or not. + if (MM.inComputer) { + return MM.deviceConnected(); + } + + var connected = true; + + var network = MM._getNetwork(); + if (typeof(network) != 'undefined') { + var networkState = network.connection.type; + connected = networkState == Connection.WIFI; + } + return connected; + }, + _renderManageAccounts: function(sites) { if (!sites) { sites = []; @@ -462,6 +488,16 @@ var MM = { e.stopPropagation(); }); + // Heading icons (used by some plugins like messages). + var hilr = $("#header-icon-left, #header-icon-right"); + $(hilr).css("position", "absolute"); + $(hilr).css("z-index", "9999"); + $(hilr).css("top", "6px"); + $(hilr).css("display", "none"); + + $("#header-icon-left").css("left", MM.panels.sizes.threePanels.center - 25); + $("#header-icon-right").css("left", MM.panels.sizes.threePanels.center + MM.panels.sizes.threePanels.right - 25); + // Swipe detection. $('#panel-center, #panel-right').swipe({ swipeLeft: function(event, direction, distance, duration, fingerCount) { @@ -484,10 +520,18 @@ var MM = { */ setUpPhoneModeLayout: function() { $('#mainmenu').bind(MM.quickClick, function(e) { - MM.panels.goBack(); + MM.panels.menuShow(); e.preventDefault(); }); + // Heading icons (used by some plugins like messages). + var hilr = $("#header-icon-left, #header-icon-right"); + $(hilr).css("position", "absolute"); + $(hilr).css("z-index", "9999"); + $(hilr).css("top", "6px"); + $(hilr).css("right", "10px"); + $(hilr).css("display", "none"); + var excludedElements = "button, input, select, textarea, .noSwipe"; if (MM.deviceOS == 'android') { excludedElements += ", a"; @@ -621,6 +665,65 @@ var MM = { MM.sync.css(); }, + _loadGroups: function(courses) { + + var wsName = ""; + if (MM.util.wsAvailable("local_mobile_core_group_get_course_user_groups")) { + wsName = "local_mobile_core_group_get_course_user_groups"; + } else if (MM.util.wsAvailable("core_group_get_course_user_groups")) { + wsName = "core_group_get_course_user_groups"; + } + + if (wsName) { + + // Delete existing groups. + var groups = MM.db.where("usergroups", {site: MM.config.current_site.id, userid: MM.config.current_site.userid}); + groups.forEach(function(group) { + MM.db.remove("usergroups", group.get("id")); + }); + + var settings = { + getFromCache: false, + saveToCache: true + }; + var userId = MM.config.current_site.userid; + + courses.forEach(function(course) { + MM.moodleWSCall( + wsName, + { + courseid: course.id, + userid: MM.site.get('userid') + }, + function(result) { + if (result.groups) { + result.groups.forEach(function(group) { + group.groupid = group.id; + group.id = MM.config.current_site.id + "-" + group.id; + MM.db.insert("groups", group); + // One entry per user per group. + var usergroup = { + id: group.id + "-" + userId, + userid: userId, + groupid: group.groupid, + courseid: course.id + }; + MM.db.insert("usergroups", usergroup); + }); + } + }, + { + getFromCache: false, + saveToCache: true + }, + function(e) { + MM.log("Error retrieving groups " + e); + } + ); + }); + } + }, + /** * Load courses. */ @@ -628,6 +731,20 @@ var MM = { var plugins = []; var coursePlugins = []; + var frontPage = { + "id": 1, + "shortname": MM.lang.s("frontpage"), + "fullname": MM.lang.s("frontpage"), + "enrolledusercount": 0, + "idnumber": "", + "visible":1 + }; + + courses.unshift(frontPage); + + // We need all the groups a user is enrolled to for synchronize calendar events. + MM._loadGroups(courses); + for (var el in MM.config.plugins) { var index = MM.config.plugins[el]; var plugin = MM.plugins[index]; @@ -693,7 +810,7 @@ var MM = { }); // Store the courses - for (var el in courses) { + for (el in courses) { // We clone the course object because we are going to modify it in a copy. var storedCourse = JSON.parse(JSON.stringify(courses[el])); storedCourse.courseid = storedCourse.id; @@ -703,6 +820,11 @@ var MM = { var r = MM.db.insert('courses', storedCourse); } + // Check calendar events for new notifications. + if (MM.plugins.events && MM.plugins.events.isPluginVisible()) { + MM.plugins.events.checkLocalNotifications(); + } + MM._showMainAppPanels(); if (MM.deviceType == 'tablet') { @@ -1091,6 +1213,34 @@ var MM = { return /^http(s)?\:\/\/.*/i.test(url) }, + _saveTokenSuccess: function(site, token) { + // Now we check for the minimum required version. + // We check for WebServices present, not for Moodle version. + // This may allow some hacks like using local plugins for adding missin functions in previous versions. + var validMoodleVersion = false; + $.each(site.functions, function(index, el) { + // core_get_component_strings Since Moodle 2.4 + if (el.name.indexOf("component_strings") > -1) { + validMoodleVersion = true; + return false; + } + }); + if (!validMoodleVersion) { + MM.popErrorMessage(MM.lang.s('invalidmoodleversion') + "2.4"); + return false; + } + site.id = hex_md5(site.siteurl + site.username); + site.token = token; + var newSite = MM.db.insert('sites', site); + MM.setConfig('current_site', site); + MM.loadSite(newSite.id); + MM.closeModalLoading(); + + $('#url').val(''); + $('#username').val(''); + $('#password').val(''); + }, + /** * Save the token retrieved and load the full siteinfo object. * @param {str} token The user token @@ -1110,29 +1260,23 @@ var MM = { }; // We have a valid token, try to get the site info. - MM.moodleWSCall('moodle_webservice_get_siteinfo', {}, function(site) { - // Now we check for the minimum required version. - // We check for WebServices present, not for Moodle version. - // This may allow some hacks like using local plugins for adding missin functions in previous versions. - var validMoodleVersion = false; - $.each(site.functions, function(index, el) { - // core_get_component_strings Since Moodle 2.4 - if (el.name.indexOf("component_strings") > -1) { - validMoodleVersion = true; - return false; - } - }); - if (!validMoodleVersion) { - MM.popErrorMessage(MM.lang.s('invalidmoodleversion') + "2.4"); - return false; + MM.moodleWSCall('moodle_webservice_get_siteinfo', {}, + function(site) { + MM._saveTokenSuccess(site, token); + }, + preSets, + function(e) { + // An error may happen if the site use the core_webservice_get_site_info instead the old one. + MM.moodleWSCall( + 'core_webservice_get_site_info', + {}, + function(site) { + MM._saveTokenSuccess(site, token); + }, + preSets + ); } - site.id = hex_md5(site.siteurl + site.username); - site.token = token; - var newSite = MM.db.insert('sites', site); - MM.setConfig('current_site', site); - MM.loadSite(newSite.id); - MM.closeModalLoading(); - }, preSets); + ); }, @@ -1143,9 +1287,12 @@ var MM = { * @param {string} username User name. * @param {string} password Password. * @param {string} siteurl The site url. + * @param {bool} retry We are retrying with a prefixed URL. * @return {boolean} Allways returns false */ - saveSite: function(username, password, siteurl) { + saveSite: function(username, password, siteurl, retry) { + retry = retry || false; + MM.showModalLoading(MM.lang.s("authenticating")); var loginURL = siteurl + '/login/token.php'; MM.siteurl = siteurl; @@ -1169,7 +1316,18 @@ var MM = { var error = MM.lang.s('invalidaccount'); if (typeof(json.error) != 'undefined') { - error = json.error; + // We only allow one retry (to avoid loops). + if (!retry && json.errorcode == "requirecorrectaccess") { + MM.log("Retry with prefixed URL"); + siteurl = siteurl.replace("https://", "https://www."); + siteurl = siteurl.replace("http://", "http://www."); + $("#url").val(siteurl); + + MM.saveSite(username, password, siteurl, true); + return; + } else { + error = json.error; + } } MM.popErrorMessage(error); } @@ -1412,9 +1570,21 @@ var MM = { return; } + // Check if is a deprecated function. + if (typeof MM.deprecatedFunctions[method] != "undefined") { + if (MM.util.wsAvailable(MM.deprecatedFunctions[method])) { + MM.log("You are using deprecated Web Services: " + method + " you must replace it with the newer function: " + MM.deprecatedFunctions[method]); + // Use the non-deprecated function. + method = MM.deprecatedFunctions[method]; + } else { + MM.log("You are using deprecated Web Services. Your remote site seems to be outdated, consider upgrade it to the latest Moodle version."); + } + } data.wsfunction = method; data.wstoken = preSets.wstoken; + // Enable text filtering. + data.moodlewssettingfilter = true; preSets.siteurl += '/webservice/rest/server.php?moodlewsrestformat=json'; var ajaxData = data; @@ -1482,7 +1652,9 @@ var MM = { } if (typeof(data.exception) != 'undefined') { - MM.closeModalLoading(); + if (!preSets.silently && preSets.showModalLoading) { + MM.closeModalLoading(); + } if (data.errorcode == "invalidtoken" || data.errorcode == "accessexception") { if (!preSets.silently) { @@ -1509,7 +1681,9 @@ var MM = { } if (typeof(data.debuginfo) != 'undefined') { - MM.closeModalLoading(); + if (!preSets.silently && preSets.showModalLoading) { + MM.closeModalLoading(); + } if (errorCallBack) { errorCallBack('Error. ' + data.message); } else { @@ -1530,14 +1704,26 @@ var MM = { MM.cache.addWSCall(preSets.siteurl, ajaxData, data); } - MM.closeModalLoading(); + if (!preSets.silently && preSets.showModalLoading) { + MM.closeModalLoading(); + } // We pass back a clone of the original object, this may // prevent errors if in the callback the object is modified. callBack(JSON.parse(JSON.stringify(data))); + + // Do logging in Moodle. + if (typeof preSets.logging != "undefined") { + if (typeof preSets.logging.callBack == "undefined") { + preSets.logging.callBack = null; + } + MM.moodleLogging(preSets.logging.method, preSets.logging.data, preSets.logging.callBack); + } }, error: function(xhr, ajaxOptions, thrownError) { - MM.closeModalLoading(); + if (!preSets.silently && preSets.showModalLoading) { + MM.closeModalLoading(); + } var error = MM.lang.s('cannotconnect'); if (xhr.status == 404) { @@ -1555,6 +1741,34 @@ var MM = { }); }, + moodleLogging: function(method, data, callBack) { + // Check if the method is supported. + if (!MM.util.wsAvailable(method)) { + method = 'local_mobile_' + method; + if (!MM.util.wsAvailable(method)) { + MM.log("Logging method doesn't exist " + method); + return false; + } + } + + if (typeof callBack != "function") { + callBack = function(d) { + MM.log("Action logged " + method); + }; + } + + MM.moodleWSCall( + method, + data, + callBack, + { + saveToCache: false, + getFromCache: false, + silently: true + } + ); + }, + /** * Uploads a file to Moodle using Cordova File API * @@ -2102,8 +2316,9 @@ var MM = { * * @param {string} text The text to be displayed. * @param {object} callBack The function to be called when user confirms. + * @param {object} cancelCallBack The function to be called when user cancels. */ - popConfirm: function(text, callBack) { + popConfirm: function(text, callBack, cancelCallBack) { var options = { buttons: {} }; @@ -2111,7 +2326,12 @@ var MM = { MM.widgets.dialogClose(); callBack(); }; - options.buttons[MM.lang.s('no')] = MM.widgets.dialogClose; + options.buttons[MM.lang.s('no')] = function() { + MM.widgets.dialogClose(); + if(cancelCallBack) { + cancelCallBack(); + } + }; MM.popMessage(text, options); // Reset router so the Confirm dialog can be displayed again if the user click in the same link. @@ -2304,25 +2524,34 @@ var MM = { window.open(link, '_system'); } ); - } else if (MM._canUseChildBrowser()) { - MM.log('Launching childBrowser'); - try { - window.plugins.childBrowser.showWebPage( - link, - { - showLocationBar: true , - showAddress: false - } - ); - } catch(e) { - MM.log('Launching childBrowser failed!, opening as standard link'); - window.open(link, '_blank'); + } else if (MM.deviceOS == 'ios' && typeof handleDocumentWithURL == 'function') { + + var fsRoot = MM.fs.getRoot(); + // Encode/decode the specific file path, note that a path may contain directories with white spaces, special characters... + if (link.indexOf(fsRoot > -1)) { + link = link.replace(fsRoot, ""); + link = encodeURIComponent(decodeURIComponent(link)); + link = fsRoot + link; } + + handleDocumentWithURL( + function() { + MM.log('File opened with handleDocumentWithURL' + link); + }, + function(error) { + MM.log('Error opening with handleDocumentWithURL' + link); + if(error == 53) { + console.log('No app that handles this file type.'); + } + MM._openFileWithBrowser(link); + }, + link + ); } else { - // Changing _blank for _system may work in cordova 2.4 and onwards - MM.log('Open external file using window.open'); - window.open(link, '_blank'); + // Last try, launch the file with the browser. + MM._openFileWithBrowser(link); } + } else { // Changing _blank for _system may work in cordova 2.4 and onwards MM.log('Open external file using window.open'); @@ -2330,6 +2559,28 @@ var MM = { } }, + _openFileWithBrowser: function(file) { + if (MM._canUseChildBrowser()) { + MM.log('Launching childBrowser'); + try { + window.plugins.childBrowser.showWebPage( + file, + { + showLocationBar: true , + showAddress: false + } + ); + } catch(e) { + MM.log('Launching childBrowser failed!, opening as standard link'); + window.open(file, '_blank'); + } + } else { + // Changing _blank for _system may work in cordova 2.4 and onwards + MM.log('Open external file using window.open'); + window.open(file, '_blank'); + } + }, + /** * Loads additional JS files presents in the config.json file * See MOBILE-239 diff --git a/lib/mm.lang.js b/lib/mm.lang.js index 0a5e491c8..66ebbfbd4 100755 --- a/lib/mm.lang.js +++ b/lib/mm.lang.js @@ -164,7 +164,7 @@ MM.lang = { * @param {string} id The unique id of the string to be translated. * @param {string} component Core for regular strings or pluginname for plugins. */ - s: function(id, component) { + s: function(id, component, replace) { if (typeof(component) == 'undefined') { component = 'core'; @@ -172,7 +172,7 @@ MM.lang = { var translated = ''; // First we check if we find the string in the current language. - if (typeof(MM.lang.strings[MM.lang.current][component]) != 'undefined' && + if (MM.lang.current != '' && typeof(MM.lang.strings[MM.lang.current][component]) != 'undefined' && typeof(MM.lang.strings[MM.lang.current][component][id]) !== 'undefined' ) { translated = MM.lang.strings[MM.lang.current][component][id]; @@ -201,6 +201,11 @@ MM.lang = { if (!translated) { translated = '[[' + id + ']]'; } + + if (typeof(replace) != 'undefined') { + translated = translated.replace("{$a}", replace); + } + return translated; }, }; diff --git a/lib/mm.panels.js b/lib/mm.panels.js index 596387fa9..bf7acde28 100644 --- a/lib/mm.panels.js +++ b/lib/mm.panels.js @@ -46,10 +46,47 @@ MM.panels = { * @param {string} html The html to be inserted. */ html: function(position, html) { - // If we are in the center or right panel, we need to add a small br for preventing contents half displayed. - if (position != "left") { - html += "
"; + // Automatically add the file with the back arrow appending the title there. + if (MM.deviceType == "phone") { + var panelCenter = $('#panel-center'); + var panelRight = $('#panel-right'); + + var showBackArrow = false; + + // Where the app were when the link was pressed. + if (panelCenter.css("display") == "block" && position != "center") { + if (html.indexOf("back-row") < 0) { + showBackArrow = true; + } + } + + if (panelRight.css("display") == "block" && position == "right") { + // Prevent double black arrows + if (html.indexOf("back-row") < 0) { + showBackArrow = true; + } + } + + if (showBackArrow) { + html = '

' + html; + } + + } else { + var showPanelTitle = false; + + if (position == "right") { + showPanelTitle = true; + } + + if (showPanelTitle && html.indexOf("back-row") >= 0) { + showPanelTitle = false; + } + + if (showPanelTitle) { + html = '

' + html; + } } + $('#panel-' + position).html(html); // For Android, we open external links in a system browser. _blank -> external browser MM.handleExternalLinks('#panel-'+position+' a[target="_blank"]'); @@ -79,6 +116,16 @@ MM.panels = { }, + showHeadingIcons: function(position) { + // Populate the header icons with the content in the hidden div in the panel. + if ((!position || position == "center") && $("#header-icon-left-content").length) { + $("#header-icon-left").css("display", "block").html($("#header-icon-left-content").html()); + } + if ((!position || position == "right") && $("#header-icon-right-content").length) { + $("#header-icon-right").css("display", "block").html($("#header-icon-right-content").html()); + } + }, + /** * Show de loading icon in a panel * @param {string} position The panel where to show the loading icon. @@ -130,12 +177,16 @@ MM.panels = { var panelCenter = $('#panel-center'); var panelRight = $('#panel-right'); + // Hide header icons. + $("#header-icon-left").css("display", "none"); + $("#header-icon-right").css("display", "none"); + MM.panels.html(position, content); MM.panels.currentPanel = position; if (MM.deviceType == 'tablet') { // Clean the page title. - if (!settings || !settings.keepTitle) { + if (position != 'right' && (!settings || !settings.keepTitle)) { pageTitle.html(""); } @@ -143,31 +194,45 @@ MM.panels = { if (settings && settings.hideRight) { MM.panels.hideRight = true; } - if (settings && settings.title) { + if (position != 'right' && settings && settings.title) { pageTitle.html(settings.title); } + + if (!MM.panels.hideRight && position == 'right') { + var panelTitle = $("#tablet-page-title"); + if (panelTitle) { + panelTitle.html(settings.title); + } + } + MM.panels.menuShow(false, settings); + + MM.panels.showHeadingIcons(); + } else { // Clean the page title. MM.panels.previousPanelPageTitle = pageTitle.html(); - if (!settings || !settings.keepTitle) { - pageTitle.html(""); + + if (position != 'right') { + if (!settings || !settings.keepTitle) { + pageTitle.html(""); + } } // Short text for page title (MOBILE-462). // We can't do this using CSS text-overflow because of the header dynamic width. - if (settings && settings.title) { + if (position != 'right' && settings && settings.title) { settings.title = MM.util.shortenText(settings.title, 35); } if (position == 'center') { // Detect if we are in the center. if (panelCenter.css('display') == 'block') { - $(".header-main .nav-item.home").removeClass("menu-back").addClass("menu-home"); if (settings && settings.title) { pageTitle.html(settings.title); } $(document).scrollTop(0); + MM.panels.showHeadingIcons('center'); return; } panelRight.css('display', 'none'); @@ -179,11 +244,11 @@ MM.panels = { panelCenter.animate({ left: 0 }, 300, function () { - $(".header-main .nav-item.home").removeClass("menu-back").addClass("menu-home"); if (settings && settings.title) { pageTitle.html(settings.title); } $(document).scrollTop(0); + MM.panels.showHeadingIcons('center'); }); $('.header-wrapper').animate({ @@ -208,11 +273,11 @@ MM.panels = { panelRight.animate({ left: 0 }, 300, function(){ - $(".header-main .nav-item.home").removeClass("menu-home").addClass("menu-back"); - if (settings && settings.title) { - pageTitle.html(settings.title); + if (settings && settings.title) { + $("#back-arrow-title").html(settings.title); } $(document).scrollTop(0); + MM.panels.showHeadingIcons('right'); }); } } @@ -231,6 +296,9 @@ MM.panels = { return; } + $("#header-icon-left").css("display", "none"); + $("#header-icon-right").css("display", "none"); + var hideHeader = false; // Clear modal panels. @@ -273,14 +341,10 @@ MM.panels = { display: 'block' }, 300, function() { $(this).css('display', 'block'); - if (showPanel == "#panel-right") { - $(".header-main .nav-item.home").removeClass("menu-home").addClass("menu-back"); - } else { - $(".header-main .nav-item.home").removeClass("menu-back").addClass("menu-home"); - } MM.panels.nextPanelPageTitle = $("#page-title").html(); $("#page-title").html(MM.panels.previousPanelPageTitle); $(document).scrollTop(0); + MM.panels.showHeadingIcons(MM.panels.currentPanel); if (typeof(callBack) === "function") { callBack(); } @@ -300,6 +364,10 @@ MM.panels = { */ goFront: function(callBack) { var showBackArrow = false; + var nextPanel = ""; + + $("#header-icon-left").css("display", "none"); + $("#header-icon-right").css("display", "none"); // Clear modal panels. if (typeof(MM.plugins.contents.infoBox) != "undefined") { @@ -309,6 +377,7 @@ MM.panels = { if ($('#panel-left').css('display') == 'block') { hidePanel = '#panel-left'; showPanel = '#panel-center'; + nextPanel = "center"; if (MM.panels.previousPanel != 'center') { return; @@ -318,6 +387,7 @@ MM.panels = { else if ($('#panel-center').css('display') == 'block') { hidePanel = '#panel-center'; showPanel = '#panel-right'; + nextPanel = "right"; if (MM.panels.previousPanel != 'right') { return; @@ -339,14 +409,11 @@ MM.panels = { }, 300, function() { $(this).css('display', 'block'); if (MM.deviceType == "phone") { - if (showBackArrow) { - $(".header-main .nav-item.home").removeClass("menu-home").addClass("menu-back"); - } else { - $(".header-main .nav-item.home").removeClass("menu-back").addClass("menu-home"); - } MM.panels.previousPanelPageTitle = $("#page-title").html(); $("#page-title").html(MM.panels.nextPanelPageTitle); $(document).scrollTop(0); + MM.panels.showHeadingIcons(nextPanel); + if (typeof(callBack) === "function") { callBack(); } @@ -372,6 +439,17 @@ MM.panels = { var panelCenter = $('#panel-center'); var panelRight = $('#panel-right'); + + if (MM.deviceType == 'phone') { + if ($('#panel-center').css('display') == 'block') { + MM.panels.goBack(); + } + else if ($('#panel-right').css('display') == 'block') { + MM.panels.goBack(MM.panels.goBack); + } + return; + } + // Clear modal panels. if (typeof(MM.plugins.contents.infoBox) != "undefined") { MM.plugins.contents.infoBox.remove(); diff --git a/lib/mm.settings.js b/lib/mm.settings.js index 2d54adf5b..723265765 100755 --- a/lib/mm.settings.js +++ b/lib/mm.settings.js @@ -60,12 +60,76 @@ MM.settings = { }); }, + _deleteSiteReferences: function(site) { + // Iterate all the collections, except the settings one. + var els, siteId; + + siteId = site.get('id'); + + // Special cases, the site attribute doesn't exist there. + MM.db.remove("sites", siteId); + MM.db.remove("services", hex_md5(site.get('siteurl'))); + + for (var collection in MM.collections) { + if(MM.collections.hasOwnProperty(collection) && collection != "settings"){ + els = MM.db.where(collection, {'site': siteId}); + _.each(els, function(el) { + MM.db.remove(collection, el.get("id")); + }); + } + } + }, + deleteSite: function(siteId) { var site = MM.db.get('sites', siteId); MM.popConfirm(MM.lang.s('deletesite'), function() { var count = MM.db.length('sites'); + + // Delete device entry from the remote site. + + var canRemove = true; + var wsFunction = "core_user_remove_user_device"; + if (!MM.util.wsAvailable(wsFunction, site)) { + wsFunction = 'local_mobile_core_user_remove_user_device'; + if (!MM.util.wsAvailable(wsFunction, site)) { + canRemove = false; + } + } + + if (typeof window.device == "undefined") { + canRemove = false; + } + + if (canRemove) { + + var data = { + uuid: window.device.uuid, + appid: MM.config.app_id + }; + + MM.moodleWSCall( + wsFunction, + data, + function() { + MM.log("Device removed from Moodle", "Notifications"); + }, + { + wstoken: site.get("token"), + siteurl: site.get("siteurl"), + silently: true, + getFromCache: false, + saveToCache: false + }, + function() { + MM.log("Error removing device from Moodle", "Notifications"); + } + ); + } + + MM.settings._deleteSiteReferences(site); + MM.setConfig("current_site", null); + if (count == 1) { - MM.db.remove('sites', siteId); // Remove file directory. MM.fs.removeDirectory(siteId, function() { @@ -74,7 +138,6 @@ MM.settings = { function() {}); MM._displayAddSite(); } else { - MM.db.remove('sites', siteId); MM.fs.removeDirectory(siteId, function() { MM.settings._deleteSiteFilesReferences(siteId); @@ -83,6 +146,10 @@ MM.settings = { MM._renderManageAccounts(); MM._displayManageAccounts(); } + MM.setConfig("current_token", null); + MM.config.current_site = null; + MM.config.current_token = null; + MM.site = null; }); }, @@ -100,7 +167,8 @@ MM.settings = { showSync: function() { var settings = [ {id: 'sync_ws_on', type: 'checkbox', label: MM.lang.s('enableautosyncws'), checked: true, handler: MM.settings.checkboxHandler}, - {id: 'sync_css_on', type: 'checkbox', label: MM.lang.s('enableautosynclang'), checked: true, handler: MM.settings.checkboxHandler} + {id: 'sync_css_on', type: 'checkbox', label: MM.lang.s('enableautosynclang'), checked: true, handler: MM.settings.checkboxHandler}, + {id: 'sync_wifi_on', type: 'checkbox', label: MM.lang.s('enablesyncwifi'), checked: false, handler: MM.settings.checkboxHandler}, ]; // Load default values @@ -123,7 +191,7 @@ MM.settings = { }); var tpl = '\ -

<%= MM.lang.s("taskqueue") %>

\ +

<%= MM.lang.s("taskqueue") %>

\ <% if (tasks.length == 0) { %>\

<%= MM.lang.s("notaskstobesynchronized") %>

\ <% } %>\ @@ -148,7 +216,7 @@ MM.settings = { tpl = '
' + syncSettings + tpl + '
'; var html = MM.tpl.render(tpl, {tasks: syncTasks}); - MM.panels.show('right', html, {title: MM.lang.s("settings") + " - " + MM.lang.s("synchronization")}); + MM.panels.show('right', html, {title: MM.lang.s("synchronization")}); // Once the html is rendered, we pretify the widgets. MM.widgets.enhance(settings); MM.widgets.addHandlers(settings); @@ -217,7 +285,7 @@ MM.settings = { var tpl = '\
\ -

<%= MM.lang.s("spaceusage") %>

\ +

<%= MM.lang.s("spaceusage") %>

\