Skip to content

Commit

Permalink
Merge branch 'release/1.8.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
Lionel Laské committed Apr 10, 2024
2 parents 9630e2a + 62958db commit 863916d
Show file tree
Hide file tree
Showing 1,627 changed files with 52,344 additions and 188,717 deletions.
38 changes: 38 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,44 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [1.8.0] - 2024-04-10
### Added
- Chart Activity
- Word Puzzle Template in Exerciser activity
- CSV support in the Journal
- Export CSV instead of TXT in Measure.activity
- Export CSV in Stopwatch activity
- Allow any files to be copied from device on Android/iOS

### Changed
- Rewrite of Chat activity
- Migrate localization to i18next
- Updated Etoys activity, supports (local) saving now
- Add pause button in Gears Activity #1506

### Fixed
- Chess multiplayer bug when a third player join #1047
- Undefined tutorial step in curriculum activity #1293
- Bad cursor pointer on scrollbar #1281
- Extra white space to right side of the buttons #1124
- Migrating Measure activity to i18next #1362
- Unable to create password mainly based on numbers #1380
- QR activity Photo Loading Icon Overlaping #1268
- Fototoon Activity: interactive buttons appears under the box shape #1221
- "Help" pop-ups nearly impossible to close in Chrome on Mobile #1403
- XSS injections on Labyrinth JS and Paint Activity #787
- Style for Planet Info in Planet Activity is Hard to See #1448
- Misaligned button in Speak activity #1504
- Added pause functionality to Blockrain activity #1501
- Fraction Bounce Activity, trick to cheat the score #1511
- Tooltips not localized in Reflection activity #1508
- Time fluctuations in Clock Activity #1507
- Resizing textarea in activity palette looks ugly #1303
- Player without face and color #1536
- Undeletable text in FotoToon #1549
- Blockrain: Game can start before pressing play button #1563
- Tank Operation the music persists even after returning to a previous screen #1553

## [1.7.0] - 2023-03-28
### Added
- Evaluation mode in Exerciser activity
Expand Down
4 changes: 2 additions & 2 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Nobody is expected to be perfect in this community. Asking questions early avoid
Step down considerately
-----------------------

When somebody leaves or disengages from the project, we ask that they do so in a way that minimises disruption to the project. They should tell people they are leaving and take the proper steps to ensure that others can pick up where they left off.
When somebody leaves or disengages from the project, we ask that they do so in a way that minimizes disruption to the project. They should tell people they are leaving and take the proper steps to ensure that others can pick up where they left off.


Leadership by example
Expand All @@ -63,4 +63,4 @@ Conduct](http://www.ubuntu.com/community/conduct). It is licensed
under the Creative Commons Attribution-Share Alike 3.0 license. You
may re-use it for your own project, and modify it as you wish, just
please allow others to use your modifications and give credit to the
Ubuntu Project!*
Ubuntu Project!*
3 changes: 3 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ As all Open Source software, contributions to Sugarizer are welcome.

A good way to start to contribute is testing and trying Sugarizer to find some issues. If you find one, don't be shy, submit your issue [here](https://github.com/llaske/Sugarizer/issues) by giving the maximum information on it, specifically detailed steps to reproduce it. We will check your issue and ask you more information if needed.

Issues are also the way to propose new features. If you have a suggestion, explain it in detail in an issue and we will discuss it.

If you're a developer, the best way to start is to read the [architecture](docs/architecture.md) then to do the whole [tutorial](docs/tutorial.md). It will give you a good understanding of Sugarizer internal.

When you think you're ready, you could try to fix some existing issues [here](https://github.com/llaske/Sugarizer/issues). If you find a fix, send a Pull Request, we will be pleased to review it.
Expand All @@ -17,6 +19,7 @@ So to send your Pull Request:

Few rules to respect when you fix an issue:

* [ ] Do not send a Pull Request without a related issue that has been approved by a Sugarizer maintainer,
* [ ] Ensure your pull request contains only update related to the fix,
* [ ] Respect indentation of the original file,
* [ ] Mention the issue number in the pull request but not in the commit message
Expand Down
75 changes: 36 additions & 39 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
![](images/sugarizer_logo_with_text.svg)

# What is Sugarizer ?
# What is Sugarizer?

Sugarizer is a free/libre learning platform. The Sugarizer UI use ergonomic principles from The [Sugar platform](https://sugarlabs.org/), developed for the One Laptop per Child project and used by more than 2 million children around the world.
Sugarizer is a free/libre learning platform. The Sugarizer UI uses ergonomic principles from The [Sugar platform](https://sugarlabs.org/), developed for the One Laptop per Child project and used by more than 2 million children around the world.

Sugarizer runs on every device: laptops, desktops, tiny computers, tablets or smartphones.

Expand All @@ -16,23 +16,23 @@ Sugarizer is available as:

# Sugarizer Application

Sugarizer Application is a cross-platform application for installing on any GNU+Linux, Windows, Mac OS, Android or iOS device.
Sugarizer Application is a cross-platform application for installation on any GNU+Linux, Windows, Mac OS, Android or iOS device.

To run **Sugarizer Application on Android**, download it on [Google Play](https://play.google.com/store/apps/details?id=org.olpc_france.sugarizer), [Amazon Store](http://www.amazon.com/gp/product/B00NKK7PZA) or [F-Droid](https://f-droid.org/repository/browse/?fdid=org.olpc_france.sugarizer).

Sugarizer on Android is also available as a launcher to replace the current launcher of your device so you could launch native Android applications from Sugarizer. You could download this Sugarizer version on [Google Play](https://play.google.com/store/apps/details?id=org.olpc_france.sugarizeros).
Sugarizer on Android is also available as a launcher to replace the current launcher of your device so you can launch native Android applications from Sugarizer. You can download this Sugarizer version on [Google Play](https://play.google.com/store/apps/details?id=org.olpc_france.sugarizeros).

You could also build yourself the Sugarizer Application APK using instruction below.
You could also build yourself the Sugarizer Application APK using the instructions below.

<a href="https://play.google.com/store/apps/details?id=org.olpc_france.sugarizer">![](images/googleplay.png)</a>
<a href="http://www.amazon.com/gp/product/B00NKK7PZA">![](images/amazonstore.png)</a>
<a href="https://f-droid.org/repository/browse/?fdid=org.olpc_france.sugarizer">![](images/fdroid.png)</a>
<a href="https://play.google.com/store/apps/details?id=org.olpc_france.sugarizer"><img src="images/googleplay.png" alt="Google Play" width="20%" ></a>
<a href="http://www.amazon.com/gp/product/B00NKK7PZA"><img src="images/amazonstore.png" alt="Amazon Store" width="20%" ></a>
<a href="https://f-droid.org/repository/browse/?fdid=org.olpc_france.sugarizer"><img src="images/fdroid.png" alt="F-Droid" width="20%" ></a>



To run **Sugarizer Application on iOS**, download it on [Apple Store](https://itunes.apple.com/us/app/sugarizer/id978495303) or build yourself the Sugarizer Application IPA using instructions below.
To run **Sugarizer Application on iOS**, download it on [Apple Store](https://itunes.apple.com/us/app/sugarizer/id978495303) or build yourself the Sugarizer Application IPA using the instructions below.

<a href="https://apps.apple.com/us/app/sugarizer/id978495303">![](images/applestore.png)</a>
<a href="https://apps.apple.com/us/app/sugarizer/id978495303"><img src="images/applestore.png" alt="Apple Store" width="20%" ></a>

To run **Sugarizer Application on GNU Linux/Mac OS/Windows**, download it [here](https://sugarizer.org#desktop).
The Sugarizer desktop application has four possible arguments:
Expand All @@ -42,7 +42,7 @@ The Sugarizer desktop application has four possible arguments:
* `--logoff` to logoff the previous user if one is connected (unsynchronized content will be lost)
* `--init` to remove all existing Journal and settings (all will be lost)

If you're a developer you could also launch Sugarizer desktop application using [electron](https://github.com/electron/electron). First install Node.js and npm on your computer. See [here](http://nodejs.org/) for more information. Then install electron and specific modules for Sugarizer by running:
If you're a developer you could also launch Sugarizer desktop application using [electron](https://github.com/electron/electron). First, install Node.js and npm on your computer. See [here](http://nodejs.org/) for more information. Then install electron and specific modules for Sugarizer by running:

npm install

Expand Down Expand Up @@ -104,9 +104,9 @@ Sugarizer Web App is a web application that runs on any device with a recent ver

As a web application, it does not run offline and requires a permanent network connection to a **Sugarizer Server**.

Sugarizer Server allow deployment of Sugarizer on a local server, for example on a school server, so expose locally Web Application (without Internet access). Sugarizer Server can also be used to provide collaboration features for Sugarizer Application on the network.
Sugarizer Server allows deployment of Sugarizer on a local server, for example on a school server, so exposes locally Web Application (without Internet access). Sugarizer Server can also be used to provide collaboration features for Sugarizer Application on the network.

To install your own Sugarizer Server, follow instructions on
To install your own Sugarizer Server, follow the instructions on
[Sugarizer Server repository](https://github.com/llaske/sugarizer-server)


Expand All @@ -119,13 +119,13 @@ If you're a developer and you want to learn more about Sugarizer architecture, s

# Activities distribution

All activities could be found in the [activities](activities) directory. Each activity has its own subdirectory. So for example, the *Abecedarium* activity is located in [activities/Abecedarium.activity](activities/Abecedarium.activity)
All activities can be found in the [activities](activities) directory. Each activity has its own subdirectory. So for example, the *Abecedarium* activity is located in [activities/Abecedarium.activity](activities/Abecedarium.activity)

You could distribute Sugarizer with whatever activities you want.
To do that, you first need to adapt the content of the [activities](activities) directory to match your wish: removing activities you don't want to distribute and adding in this directory new activities you want to include.
To do that, you first need to adapt the content of the [activities](activities) directory to match your wish: removing activities you don't want to distribute and adding in this directory new activities you want to include.

Then you need to update the [activities.json](activities.json) file to reflect your choice.
Here an example of this file:
Here is an example of this file:

[
{"id": "org.sugarlabs.GearsActivity", "name": "Gears", "version": 6, "directory": "activities/Gears.activity", "icon": "activity/activity-icon.svg", "favorite": true, "activityId": null},
Expand Down Expand Up @@ -178,7 +178,7 @@ With Sugarizer, it's easy to create an activity with a bunch of HTML and JavaScr

![](images/tutorial_teaser.png)

If you're interested to create your own activity, a full tutorial will guide you between all development steps:
If you're interested in creating your own activity, a full tutorial will guide you between all the development steps:

* **Step 1**: create the activity from a template
* **Step 2**: customize icon and content
Expand Down Expand Up @@ -214,15 +214,15 @@ Refer [this](docs/ios/ios_doc.md) documentation for building sugarizer for iOS.

# Reduce package size

The current size of Sugarizer is more than 400 Mb. This huge size is related to media content and resources include in three activities:
The current size of Sugarizer is more than 400 Mb. This huge size is related to media content and resources included in three activities:

* **Abecedarium activity**: about 150 Mb
* **Etoys activity**: about 100 Mb
* **Scratch activity**: about 50 Mb

By the way, these activities are able to retrieve the content remotely if its not deployed locally. So, if you want to reduce the Sugarizer package size (specifically for deployment on mobile) you could either remove completely those three activities or just remove the media content of these activities.
By the way, these activities are able to retrieve the content remotely if it's not deployed locally. So, if you want to reduce the Sugarizer package size (specifically for deployment on mobile) you could either remove completely those three activities or just remove the media content of these activities.

To remove activities, just remove these activities directory and update [activities.json](activities.json) file as explain above.
To remove activities, just remove these activities directory and update [activities.json](activities.json) file as explained above.

To remove media content for **Abecedarium**, remove directories:

Expand All @@ -239,19 +239,19 @@ To remove resources for **Scratch**, remove directory [activities/Scratch.activi

# Optimize performance

If you want to optimize JavaScript performance, you could generate an optimized version of Sugarizer with [Grunt](http://gruntjs.com). This optimized version will minimize and reduce size of all JavaScript files.
If you want to optimize JavaScript performance, you could generate an optimized version of Sugarizer with [Grunt](http://gruntjs.com). This optimized version will minimize and reduce the size of all JavaScript files.

First ensure than Node.js and npm is installed on your machine. See [here](http://nodejs.org/) for more information.
First, ensure that Node.js and npm are installed on your machine. See [here](http://nodejs.org/) for more information.

The [Gruntfile.js](Gruntfile.js) contains tasks settings to build an optimized version of Sugarizer. To do that, ensure first that grunt is installed:

npm install -g grunt-cli

Then install specific component for Sugarizer by running:
Then install the specific component for Sugarizer by running:

npm install --only=dev

Finally launch:
Finally, launch:

grunt -v

Expand All @@ -262,20 +262,17 @@ At the end of the process, all JavaScript files in all directories have been rep

If you're not a developer and you want to translate Sugarizer into your own language, please go to the [Sugarizer translation platform](http://translate.sugarizer.org) where you will be able to do that. If you're a developer, the following paragraphs will explain to you how the Sugarizer localization system works.

Sugarizer use [webL10n](https://github.com/fabi1cazenave/webL10n) localization system by Fabien Cazenave.
Sugarizer use [i18next](https://www.i18next.com/) localization system.

Here how to add a new translation. See a video tutorial [here](https://youtu.be/vTPVegrVm5A).
All strings are localized in JSON files in the [locales](locales) directory at the root of the repository.
If you want to add a new translation, copy the `en.json` files in a new one and:

All strings are localized in the [locale.ini](locale.ini) file at the root of the repository.
If you want to add a new translation, copy the whole [en] section at the end of the file and:
* Replace "en" in the new file name by the [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) of your language. For example, "fr.json" for French,
* Substitute the right side of the ":" character on each line of the file by the string localized in your language. For example:

* Replace "en" by the [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) of your language. For example, "fr" for French,
* Substitute the right side of the "=" character on each line by the string localized in your language. For example:

[fr]
StartNew=Commencer un nouveau
NameActivity=Activité {{name}}
RemoveFavorite=Retirer le favori
"StartNew": "Commencer un nouveau",
"NameActivity": "Activité {{name}}",
"RemoveFavorite": "Retirer le favori",

Warning: Note that text inside {{}} must not be localized. So here, **{{name}}** is not translated.

Expand All @@ -286,13 +283,13 @@ Sugarizer automatically detects the navigator language. To enable this detection

Sugarizer settings display a list of all available languages. You need to add your language in this dialog. For this you have to:

* Add a new string in [locale.ini](locale.ini) with the name of your language in English. For example:
* Add a new string in [locales/en.json](locales/en.json) with the name of your language in English. For example:

French=French
"French": "French",

* Add the same line for all languages/sections in the file. If you're able to do that, translate the right side of the "=" character with the localized string for the name of your language. If you don't know how to translate it, just let the English word. For example:
* Add the same line in all other language files. If you're able to do that, translate the right side of the ":" character with the localized string for the name of your language. If you don't know how to translate it, just use the English word. For example:

French=Français
"French": "Français",

* Add your string in the [js/dialog.js](js/dialog.js) file in the create function of the Enyo class Sugar.DialogLanguage. You should give the ISO 639-1 language code and the new string for your language name. For example:

Expand Down
Loading

0 comments on commit 863916d

Please sign in to comment.