diff --git a/app/android/fastlane/metadata/android/en-US/changelogs/12.txt b/app/android/fastlane/metadata/android/en-US/changelogs/12.txt new file mode 100644 index 00000000..212904fd --- /dev/null +++ b/app/android/fastlane/metadata/android/en-US/changelogs/12.txt @@ -0,0 +1,14 @@ +> No breaking changes +* Add certificates +* Add statistics page +* Add reset button on all part items +* Remove coming soon in settings +* Fix responsive scroll views + +API + +> No breaking changes + +* Add new quiz type: Multiple choice +* Add points to all part items +* Add `allow-reset` property to control if a user can reset the current part item \ No newline at end of file diff --git a/docs/src/pages/versions.md b/docs/src/pages/versions.md index 599bfda6..45210fa8 100644 --- a/docs/src/pages/versions.md +++ b/docs/src/pages/versions.md @@ -8,8 +8,9 @@ currently being supported with security updates. | Version | Supported | | | ------- | --------- | ------------------------------------------------: | | Preview | 🚧 | [Documentation](https://docs.dev-doctor.cf/next/) | -| 1.4.x | βœ”οΈ | [Documentation](https://docs.dev-doctor.cf) | -| 1.3.x | ❌ | [Documentation](https://docs.dev-doctor.cf) | +| 1.5.x | βœ”οΈ | [Documentation](https://docs.dev-doctor.cf) | +| 1.4.x | ❌ | [Documentation](https://docs.dev-doctor.cf/1.4/) | +| 1.3.x | ❌ | [Documentation](https://docs.dev-doctor.cf/1.4/) | | 1.2.x | ❌ | [Documentation](https://docs.dev-doctor.cf/1.2/) | | 1.1.x | ❌ | [Documentation](https://docs.dev-doctor.cf/1.2/) | | 1.0.x | ❌ | [Documentation](https://docs.dev-doctor.cf/1.2/) | diff --git a/docs/versioned_docs/version-1.5/api.md b/docs/versioned_docs/version-1.5/api.md new file mode 100644 index 00000000..5cc81ea4 --- /dev/null +++ b/docs/versioned_docs/version-1.5/api.md @@ -0,0 +1,56 @@ +--- +title: Main +id: api +--- +## Example + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +```json title="config.json" +{ + "name": "Dev-Doctor", + "description": "The sample backend of dev-doctor", + "icon": null, + "courses": [ + "example", + "example2" + ] +} +``` + + + + +```yaml title="config.yml" +# The name of the current backend +name: 'Dev-Doctor' +# The description of the current backend +description: / + The sample backend of dev-doctor +# The icon of the backend. Supported values are [png, jpg, svg, null] +icon: null +# All courses of the current backend +courses: +- example +- example2 +``` + + + + +## Options + +| Name | Type | Required | Description | +| :---------- | :----------------------------: | :------: | ----------------------------------------------------------------------------------------------------------------------------------------------: | +| name | String | true | The name of the current backend. It will show up in the backend store as title or in the servers settings. | +| description | String | false | The description of the current backend. It will show up in the backend store after the title. | +| icon | String (png, jpg, svg) or null | false | The icon will show up in the backend store in the list left to the title, on the details page of the backend store and in the servers settings. | +| courses | Array | true | The folder names of the courses. With this option the app will iterate above the courses | +| support_url | String | false | The current url where you can get help | diff --git a/docs/versioned_docs/version-1.5/api/author.md b/docs/versioned_docs/version-1.5/api/author.md new file mode 100644 index 00000000..30ca6181 --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/author.md @@ -0,0 +1,45 @@ +--- +title: Author +--- +## Example + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +```json title="config.json" +{ + "name": "CodeDoctorDE" , + "url": "https://github.com/CodeDoctorDE", + "avatar": "https://avatars1.githubusercontent.com/u/20452814?v=4", + "avatar-type": "png" +} +``` + + + + +```yaml title="config.yml" +"author": + "name": "CodeDoctorDE" + "url": "https://github.com/CodeDoctorDE" + "avatar": "https://avatars1.githubusercontent.com/u/20452814?v=4" + "avatar-type": "png" +``` + + + + +## Options + +| Name | Type | Required | Description | +| :---------- | :--------------------: | :------: | -----------------------------------------------------------------------: | +| name | String | true | The display name of the author. It will be displayed right to the avatar | +| url | String | false | The url which will be opened if the user clicks on the author | +| avatar | String | false | The url to the avatar image | +| avatar-type | String (png, jpg, svg) | false | The type of the current avatar | diff --git a/docs/versioned_docs/version-1.5/api/course.md b/docs/versioned_docs/version-1.5/api/course.md new file mode 100644 index 00000000..494106a8 --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/course.md @@ -0,0 +1,128 @@ +--- +title: Course +--- + +## Example + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +````json title="/config.json" +{ + "icon": "png", + "name": "Example course", + "author": { + "name": "CodeDoctorDE", + "url": "https://github.com/CodeDoctorDE", + "avatar": "https://avatars1.githubusercontent.com/u/20452814?v=4" + }, + "description": "This course is only an example which shows how this config works\n", + "body": "Changes are automatically rendered as you type.\n* Implements [GitHub Flavored Markdown](https://github.github.com/gfm/)\n* Renders actual, \"native\" React DOM elements\n* Allows you to escape or skip HTML (try toggling the checkboxes above)\n* If you escape or skip the HTML, no `dangerouslySetInnerHTML` is used! Yay!\n## Table of Contents\n## HTML block below\n
\n This blockquote will change based on the HTML settings above.\n
\n## How about some code?\n```js\nvar React = require('react');\nvar Markdown = require('react-markdown');\nReact.render(\n ,\n document.getElementById('content')\n);\n```\n\nPretty neat, eh?\n\n## Tables?\n\n| Feature | Support |\n| :-------: | ------- |\n| tables | βœ” |\n| alignment | βœ” |\n| wewt | βœ” |\n\n## More info?\n\nRead usage information and more on [GitHub](https://github.com/remarkjs/react-markdown)\n---------------\nA component by [Espen Hovlandsdal](https://espen.codes/)\n", + "category": [], + "lang": "en", + "private": true, + "parts": [ + "part-1", + "part-2" + ] +} +```` + +
+ + +````yaml title="/config.yml" +# The icon of the backend. Supported values are [png, jpg, svg, null] +icon: png + +# The name of the course. You can see it in the title or in the list +name: Example course + +# The author. It will appear on the front page and on the courses list +author: + name: CodeDoctorDE + url: https://github.com/CodeDoctorDE + avatar: https://avatars1.githubusercontent.com/u/20452814?v=4 + +# The description of the course which can be seen in the list of the courses and the intro page. +description: > + This course is only an example which + shows how this config works + +# The body is posting on the home page of the course page. Source: https://remarkjs.github.io/react-markdown/ +body: | + Changes are automatically rendered as you type. + * Implements [GitHub Flavored Markdown](https://github.github.com/gfm/) + * Renders actual, "native" React DOM elements + * Allows you to escape or skip HTML (try toggling the checkboxes above) + * If you escape or skip the HTML, no `dangerouslySetInnerHTML` is used! Yay! + ## Table of Contents + ## HTML block below +
+ This blockquote will change based on the HTML settings above. +
+ ## How about some code? + ```js + var React = require('react'); + var Markdown = require('react-markdown'); + React.render( + , + document.getElementById('content') + ); + ``` + + Pretty neat, eh? + + ## Tables? + + | Feature | Support | + | :-------: | ------- | + | tables | βœ” | + | alignment | βœ” | + | wewt | βœ” | + + ## More info? + + Read usage information and more on [GitHub](https://github.com/remarkjs/react-markdown) + --------------- + A component by [Espen Hovlandsdal](https://espen.codes/) + +# The current category of the course. You can see the categories in the list +category: [] + +# The language of the course. You can see a flag as a badge of the course. +lang: en + +# Controls if the course is shown in the list +private: true + +# The course. See the preview to understand all config entries +parts: +- part-1 +- part-2 + +```` + +
+
+ +## Options + +| Name | Type | Required | Description | +| :---------- | :----------------------------: | :------: | ------------------------------------------------------------------------------------------------: | +| name | String | true | The name of the course. It will shown in the courses list and in the course details. | +| description | String | false | The description of the course which can be seen in the list of the courses and the intro page. | +| body | String (Markdown) | true | This will display on the course details page | +| icon | String (png, jpg, svg) or null | false | The icon will show up in the course list left to the title and on the details page of the course. | +| lang | String (Language tag) | false | The language of the current course | +| author | [Author](author.md) | false | The author. It will appear on the front page and on the courses list | +| category | Array | false | The current category of the course. You can see the categories in the list | +| private | Boolean | false | Controls if the course is shown in the list | +| parts | Array | true | The course contents. This are the folder names of the parts | +| support_url | String | false | The current url where you can get help. This will override the main support url | diff --git a/docs/versioned_docs/version-1.5/api/item/overview.md b/docs/versioned_docs/version-1.5/api/item/overview.md new file mode 100644 index 00000000..692eb62b --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/item/overview.md @@ -0,0 +1,18 @@ +--- +title: Item +sidebar_label: Overview +--- + +## Sub classes + +- [text](text) +- [video](video) +- [quiz](quiz) + +## Options + +| Name | Type | Required | Description | +| :---------- | :-------------------------------------------------: | :------: | ---------------------------------------------------------------------------------------------: | +| name | String | true | The name of the current part item. It will show up in the tab as label and in the details card | +| description | String | false | The description of the current part item. It will show up in the details card under the name | +| type | String ([text](text), [video](video), [quiz](quiz)) | true | The current sub class. | diff --git a/docs/versioned_docs/version-1.5/api/item/quiz.md b/docs/versioned_docs/version-1.5/api/item/quiz.md new file mode 100644 index 00000000..278147ef --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/item/quiz.md @@ -0,0 +1,223 @@ +--- +title: Quiz item +sidebar_label: Quiz +--- +Extends [Item](overview) + +## Example + +In the items option in the [part](../part) + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +```json title="//config.json" +{ + "name": "Quiz", + "time": 600, + "type": "quiz", + "questions": [ + { + "title": "Question 1 title", + "description": "Question 1 description", + "evaluation": "An evaluation", + "answers": [ + { + "name": "A" + }, + { + "name": "B" + }, + { + "name": "C", + "points": 5, + "correct": true + }, + { + "name": "D", + "points": 2, + "correct": true + } + ] + }, + { + "title": "Question 2 title", + "description": "Question 2 description", + "evaluation": "An evaluation for question 2", + "answers": [ + { + "name": "A", + "correct": true + }, + { + "name": "B", + "correct": true + }, + { + "name": "C" + }, + { + "name": "D" + } + ] + } + ] +} +``` + + + + +```yaml title="//config.yml" +name: Quiz +# Optional: Max time in seconds (here: 10 minutes) +time: 600 +type: quiz +questions: +- title: Question 1 title + description: Question 1 description + evaluation: An evaluation + answers: + - name: A + - name: B + - name: C + points: 5 + correct: true + - name: D + points: 2 + correct: true +- title: Question 2 title + description: Question 2 description + evaluation: An evaluation for question 2 + answers: + - name: A + correct: true + - name: B + correct: true + - name: C + - name: D +``` + + + + +## Options + +| Name | Type | Required | Description | +| :-------- | :------------------------------------: | :------: | ----------------------------------------------------------------------------------------: | +| tune | Integer | false | How long should the user have time to solve this quiz. If not set, there is no time limit | +| questions | Array<[Quiz question](#quiz-question)> | true | All questions from the part item | + +## Inner classes + +### Quiz question + +#### Example + + + + +```json title="//config.json" +{ + "title": "Question 1 title", + "description": "Question 1 description", + "evaluation": "An evaluation", + "answers": [ + { + "name": "A" + }, + { + "name": "B" + }, + { + "name": "C", + "points": 5, + "correct": true + }, + { + "name": "D", + "points": 2, + "correct": true + } + ] +} +``` + + + + +```yaml title="//config.yml" +title: Question 1 title +description: Question 1 description +evaluation: An evaluation +answers: +- name: A +- name: B +- name: C + points: 5 + correct: true +- name: D + points: 2 + correct: true +``` + + + + +#### Options + +| Name | Type | Required | Description | +| :---------- | :--------------------------------: | :------: | ---------------------------------------------------: | +| title | String | true | This will be displayed above the answers | +| description | String | false | This will be displayed as subtitle | +| evaluation | String | false | This will be displayed if the user validate the form | +| answers | Array<[Quiz answer](#quiz-answer)> | true | All answers of the question | + +### Quiz answer + +#### Example + + + + +```json title="//config.json" +{ + "name": "C", + "points": 5, + "correct": true +} +``` + + + + +```yaml title="//config.yml" +name: C +points: 5 +correct: true +``` + + + + +#### Options + +| Name | Type | Required | Description | +| :----------- | :-----: | :------: | ----------------------------------------------------------------------------------------------------------: | +| name | String | true | The text which will be shown as answer | +| minus | Integer | false | This are the minus points which will be given if the player give the wrong answer. Default it is `0` point. | +| points | Integer | false | This are the points which will be given if the player give this answer. Default it is `1` point. | +| correct | Boolean | true | This will be displayed if the user validate the form | +| minus_points | Integer | false | The points which will be get if you don't choose this answer when it is correct. Default is `0` | diff --git a/docs/versioned_docs/version-1.5/api/item/text.md b/docs/versioned_docs/version-1.5/api/item/text.md new file mode 100644 index 00000000..a8ab3b5e --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/item/text.md @@ -0,0 +1,46 @@ +--- +title: Text item +sidebar_label: Text +--- +Extends [Item](overview) + +## Example + +In the items option in the [part](../part) + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +```json title="//config.json" +{ + "name": "Text", + "type": "text", + "text": "Here you can write something. Markdown is supported!\n" +} +``` + + + + +```yaml title="//config.yml" +name: Text +type: text +text: > + Here you can write something. Markdown is supported! +``` + + + + +## Options + +| Name | Type | Required | Description | +| :----- | :---------------: | :------: | ---------------------------------------------------------------------------: | +| text | String (Markdown) | true | The current text which will be displayed as content of the current part item | +| points | Integer | false | The points which will be get if you visited this site. Default is `1` | diff --git a/docs/versioned_docs/version-1.5/api/item/video.md b/docs/versioned_docs/version-1.5/api/item/video.md new file mode 100644 index 00000000..e5060d18 --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/item/video.md @@ -0,0 +1,50 @@ +--- +title: Video item +sidebar_label: Video +--- +Extends [Item](overview) + +## Example + +In the items option in the [part](../part) + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +```json title="//config.json" +{ + "name": "Welcome", + "description": "Welcome to the course", + "type": "video", + "source": "youtube", + "url": "ScMzIvxBSi4" +} +``` + + + + +```yaml title="//config.yml" +name: Welcome +description: Welcome to the course +type: video +source: youtube +url: ScMzIvxBSi4 +``` + + + + +## Options + +| Name | Type | Required | Description | +| :----- | :-------------------: | :------: | --------------------------------------------------------------------: | +| source | String (youtube, url) | true | The source of the file. Currently there is only youtube | +| url | String | true | The current url of the file. On youtube it is the id of the video | +| points | Integer | false | The points which will be get if you visited this site. Default is `1` | diff --git a/docs/versioned_docs/version-1.5/api/migrating.md b/docs/versioned_docs/version-1.5/api/migrating.md new file mode 100644 index 00000000..dfe143f5 --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/migrating.md @@ -0,0 +1,82 @@ +--- +title: Migrating +--- + +## Automatic + +Create a new backend by clicking on the plus. Then click on the code button in the right top corner and click on the submit button in the right bottom corner. Open the website again to copy the new code. +Repeat this steps with the course and coursepart files. + +## Manually + +:::note + +It's recommend to use the [automatic](#automatic) method. + +::: + +Add `"api-version": 9` to the [main](../api.md), [course](course.md) and [course part](part.md). + +## Migrating to 1.4 + +Change this old code: + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +```json title="/config.json" +{ + "author": "CodeDoctorDE", + "author_url": "https://github.com/CodeDoctorDE", + "author_avatar": "https://avatars1.githubusercontent.com/u/20452814?v=4", +} +``` + + + + +```yaml title="/config.yml" +"author": "CodeDoctorDE" +"author_url": "https://github.com/CodeDoctorDE" +"author_avatar": "https://avatars1.githubusercontent.com/u/20452814?v=4" +``` + + + + +To this: + + + + +```json title="/config.json" +{ + "author": { + "name": "CodeDoctorDE", + "url": "https://github.com/CodeDoctorDE", + "avatar": "https://avatars1.githubusercontent.com/u/20452814?v=4", + } +} +``` + + + + +```yaml title="/config.yml" +"author": + "name": "CodeDoctorDE" + "url": "https://github.com/CodeDoctorDE" + "avatar": "https://avatars1.githubusercontent.com/u/20452814?v=4" +``` + + + diff --git a/docs/versioned_docs/version-1.5/api/part.md b/docs/versioned_docs/version-1.5/api/part.md new file mode 100644 index 00000000..15514037 --- /dev/null +++ b/docs/versioned_docs/version-1.5/api/part.md @@ -0,0 +1,151 @@ +--- +title: Part +--- + +## Example +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + + + +```json title="//config.json" +{ + "name": "Part 1", + "description": "This is a description", + "assets": [], + "items": [ + { + "name": "Welcome", + "description": "Welcome to the course", + "type": "video", + "source": "youtube", + "url": "ScMzIvxBSi4" + }, + { + "name": "Text", + "type": "text", + "text": "Here you can write something. Markdown is supported!\n" + }, + { + "name": "Quiz", + "time": 600, + "type": "quiz", + "questions": [ + { + "title": "Question 1 title", + "description": "Question 1 description", + "evaluation": "An evaluation", + "answers": [ + { + "name": "A" + }, + { + "name": "B" + }, + { + "name": "C", + "points": 5, + "correct": true + }, + { + "name": "D", + "points": 2, + "correct": true + } + ] + }, + { + "title": "Question 2 title", + "description": "Question 2 description", + "evaluation": "An evaluation for question 2", + "answers": [ + { + "name": "A", + "correct": true + }, + { + "name": "B", + "correct": true + }, + { + "name": "C" + }, + { + "name": "D" + } + ] + } + ] + } + ] +} +``` + + + + +```yaml title="//config.yml" +# The name of the current part. The name will stand on the sidebar +name: Part 1 + +# Optional: The description of the part +description: This is a description + +# Assets which will be cached if the user is offline. The assets need to be in the asset directory +assets: [] + +# The content of the part. +items: +- name: Welcome + description: Welcome to the course + type: video + source: youtube + url: ScMzIvxBSi4 +- name: Text + type: text + text: > + Here you can write something. Markdown is supported! +- name: Quiz + # Optional: Max time in seconds (here: 10 minutes) + time: 600 + type: quiz + questions: + - title: Question 1 title + description: Question 1 description + evaluation: An evaluation + answers: + - name: A + - name: B + - name: C + points: 5 + correct: true + - name: D + points: 2 + correct: true + - title: Question 2 title + description: Question 2 description + evaluation: An evaluation for question 2 + answers: + - name: A + correct: true + - name: B + correct: true + - name: C + - name: D +``` + + + + +## Options + +| Name | Type | Required | Description | +| :---------- | :---------------------------: | :------: | ----------------------------------------------------------------------------------------------: | +| name | String | true | The name of the current part. It will show up in the app bar and in the drawer. | +| description | String | false | This will be shown in the drawer. | +| assets | Array | true | The assets (like images, videos, ...) filee names in the assets folder in the current directory | +| items | Array<[Item](item/overview)\> | true | A list of items in the current part. | diff --git a/docs/versioned_docs/version-1.5/backend/collection.md b/docs/versioned_docs/version-1.5/backend/collection.md new file mode 100644 index 00000000..367d6e98 --- /dev/null +++ b/docs/versioned_docs/version-1.5/backend/collection.md @@ -0,0 +1,9 @@ +--- +title: Backend Collection +--- + +Here you can browser through backends. Click in the app on add to add it to your servers. After that you can see the courses in the list. + +## Submit a backend + +See [here](https://github.com/LinwoodCloud/dev_doctor-backends#submit-a-backend) diff --git a/docs/versioned_docs/version-1.5/backend/overview.md b/docs/versioned_docs/version-1.5/backend/overview.md new file mode 100644 index 00000000..38e7229c --- /dev/null +++ b/docs/versioned_docs/version-1.5/backend/overview.md @@ -0,0 +1,6 @@ +--- +title: Backend +sidebar_label: Overview +--- + +Everyone can create their own backend. Use the sidebar to browse through the pages diff --git a/docs/versioned_docs/version-1.5/backend/own.md b/docs/versioned_docs/version-1.5/backend/own.md new file mode 100644 index 00000000..82b9609b --- /dev/null +++ b/docs/versioned_docs/version-1.5/backend/own.md @@ -0,0 +1,16 @@ +--- +title: Create your own backend +sidebar_label: Own backend +--- + +1. Create an account on your hosting platform +2. Download the template or click on Use template: . +3. Change the url to your backend in the index.html +4. Create a courses folder and copy the config.yml from the example course. The properties should be self explained. +5. Change the config.yml to your preferences. Add all courses to your folders. The properties should be self explained. +6. Publish this site with github pages or other hosting solution. Static site hosting is also supported. The domain should be the same as the domain in the index.html. +7. On github pages, the default domain on organsiation is https://ORGANISATION.github.io/REPOSITORY or on users is https://USER.github.io/REPOSITORY +8. Test your site by opening your website. +9. Submit your project like [here](collection/#submit-a-backend) + +Don't forget to add `"api-version": 9` to every file! \ No newline at end of file diff --git a/docs/versioned_docs/version-1.5/overview.md b/docs/versioned_docs/version-1.5/overview.md new file mode 100644 index 00000000..f9a522dc --- /dev/null +++ b/docs/versioned_docs/version-1.5/overview.md @@ -0,0 +1,7 @@ +--- +title: Overview +slug: / +id: introduction +--- + +![Alt](/img/banner.svg) diff --git a/docs/versioned_docs/version-1.5/own-backend.md b/docs/versioned_docs/version-1.5/own-backend.md new file mode 100644 index 00000000..49107994 --- /dev/null +++ b/docs/versioned_docs/version-1.5/own-backend.md @@ -0,0 +1,5 @@ +--- +title: Own backend +--- + +Moved to [here](backend/own.md) diff --git a/docs/versioned_docs/version-1.5/privacypolicy.md b/docs/versioned_docs/version-1.5/privacypolicy.md new file mode 100644 index 00000000..418e69f1 --- /dev/null +++ b/docs/versioned_docs/version-1.5/privacypolicy.md @@ -0,0 +1,63 @@ +--- +title: Privacy Policy +--- + + +CodeDoctor built the Dev-Doctor app as an Open Source app. This SERVICE is provided by CodeDoctor at no cost and is intended for use as is. + +This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service. + +If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy. + +The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which is accessible at Dev-Doctor unless otherwise defined in this Privacy Policy. + +**Information Collection and Use** + +For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retained on your device and is not collected by me in any way. + +The app does use third party services that may collect information used to identify you. + +Link to privacy policy of third party service providers used by the app + +* [Google Play Services](https://www.google.com/policies/privacy/) + +**Log Data** + +I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (β€œIP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics. + +**Cookies** + +Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory. + +This Service does not use these β€œcookies” explicitly. However, the app may use third party code and libraries that use β€œcookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service. + +**Service Providers** + +I may employ third-party companies and individuals due to the following reasons: + +* To facilitate our Service; +* To provide the Service on our behalf; +* To perform Service-related services; or +* To assist us in analyzing how our Service is used. + +I want to inform users of this Service that these third parties have access to your Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose. + +**Security** + +I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security. + +**Links to Other Sites** + +This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services. + +**Changes to This Privacy Policy** + +I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page. + +This policy is effective as of 2021-02-07 + +**Contact Us** + +If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at contact@linwood.tk. + +This privacy policy page was created at [privacypolicytemplate.net](https://privacypolicytemplate.net) and modified/generated by [App Privacy Policy Generator](https://app-privacy-policy-generator.nisrulz.com/) diff --git a/docs/versioned_sidebars/version-1.5-sidebars.json b/docs/versioned_sidebars/version-1.5-sidebars.json new file mode 100644 index 00000000..754f0e26 --- /dev/null +++ b/docs/versioned_sidebars/version-1.5-sidebars.json @@ -0,0 +1,76 @@ +{ + "version-1.5/docs": [ + { + "type": "doc", + "id": "version-1.5/introduction" + }, + { + "collapsed": true, + "type": "category", + "label": "Backend", + "items": [ + { + "type": "doc", + "id": "version-1.5/backend/overview" + }, + { + "type": "doc", + "id": "version-1.5/backend/own" + }, + { + "type": "doc", + "id": "version-1.5/backend/collection" + } + ] + }, + { + "type": "doc", + "id": "version-1.5/privacypolicy" + } + ], + "version-1.5/api": [ + { + "type": "doc", + "id": "version-1.5/api/migrating" + }, + { + "type": "doc", + "id": "version-1.5/api" + }, + { + "type": "doc", + "id": "version-1.5/api/course" + }, + { + "type": "doc", + "id": "version-1.5/api/part" + }, + { + "type": "doc", + "id": "version-1.5/api/author" + }, + { + "collapsed": false, + "type": "category", + "label": "Item", + "items": [ + { + "type": "doc", + "id": "version-1.5/api/item/overview" + }, + { + "type": "doc", + "id": "version-1.5/api/item/text" + }, + { + "type": "doc", + "id": "version-1.5/api/item/video" + }, + { + "type": "doc", + "id": "version-1.5/api/item/quiz" + } + ] + } + ] +} diff --git a/docs/versions.json b/docs/versions.json index 8ccf8e33..8da4e29e 100644 --- a/docs/versions.json +++ b/docs/versions.json @@ -1,4 +1,5 @@ [ + "1.5", "1.4", "1.2" ] diff --git a/fastlane/metadata/android/en-US/changelogs/12.txt b/fastlane/metadata/android/en-US/changelogs/12.txt new file mode 100644 index 00000000..212904fd --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/12.txt @@ -0,0 +1,14 @@ +> No breaking changes +* Add certificates +* Add statistics page +* Add reset button on all part items +* Remove coming soon in settings +* Fix responsive scroll views + +API + +> No breaking changes + +* Add new quiz type: Multiple choice +* Add points to all part items +* Add `allow-reset` property to control if a user can reset the current part item \ No newline at end of file