Giter VIP home page Giter VIP logo

epartool's Introduction

ePartool

The tool is written with multi-project support. It means that one database can be used by several projects running as separate instances. Some entities such as consultations and articles can be shared, others are project specific.

Requirements

  • PHP 7.3 or higher
  • PHP extensions:
    • GD
    • mbstring
    • pdo_mysql
  • MySQL 5.6 database with utf8mb4_unicode_ci encoding
  • memory_limit: 256M

Installation

⚠ If there is a problem loading assets such as JS and CSS files, it is likely caused by error in the application/configs/config.local.ini in the directive resources.frontController.baseUrl. If app is running in subfolder, it should be set to /subdir-name otherwise leave it as /.

Wizard

The preferred installation method is using the bundled installation wizard.

  1. Obtain the installation package by download or create it by running the $ robo create:install-zip command in the root folder of the cloned repository where the RoboFile.php is located.
  2. Visit site in browser. If the application is not installed, the installation wizard starts automatically.
  3. Unless this is a development build remove the install directory. This is not necessary if the app is to be accessed on domain matching http[s]://devel.* (see Development).

No Wizard

Filesystem

The tool uses the Robo task runner to perform the build. It is invoked by running the $ robo build command in the root folder where the RoboFile.php is located. The following tools are needed:

Once the application has been built, several environment-specific settings have to be configured.

  • Create the environment specific configuration files.

    • application/configs/config.local.ini
    • application/configs/phinx.local.yml
  • You can use files application/configs/config.local-example.ini and application/configs/phinx.local-example.yml as a template and edit the values.

  • Optionally set the APPLICATION_ENV in index.php to development.

  • Folder permissions:

    • read: /
    • read+write: /runtime/logs/
    • read+write: /runtime/sessions/
    • read+write: /runtime/cache/
    • read+write: /www/media/consultations/
    • read+write: /www/media/folders/
    • read+write: /www/image_cache/
  • Unless this is a development build remove the install directory. This is not necessary if the app is to be accessed on domain matching http[s]://devel.* (see Development).

Build

  1. Install PHP dependencies
    composer install
    
  2. Install JS dependencies
    npm install
    
  3. Install JS dependencies
    npm install
    
  4. Build assets
    grunt
    

Database

  1. Create database (see Requirements)
  2. Run the following SQL files and commands in the specified order:
    1. Populate database
      mysql -u <db_user> -h <db_host> -p <db_name> < data/create-installation.sql
      
    2. Run database migrations
      $ vendor/bin/robo phinx:migrate production
      
    3. Create project. This step can be run multiple times to create multiple projects.
      mysql -u <db_user> -h <db_host> -p <db_name> <  data/create-project.sql
      
      Ensure the var @project_code in the SQL script is set to whatever is specified in the setting project in application/configs/config.local.ini.
  3. Optionally run the following SQL files:
    • Create sample data
      data/create-sample-data.sql
      
    • Create admin user:
      data/create-admin.sql
      
      Due to security reasons the create-admin.sql script creates an admin with no password. Password can be reset using the forgotten password feature of the application itself or the file can be manually tweaked to insert the correct password hash directly.

After Install Tasks

Regardless of the installation method, the following tasks must be done:

  • Set up cronjobs. There are three ways to do it:

    • Configure an hourly cronjob to run the script application/cli.php cron via CLI.
    • Configure an hourly cronjob to send a GET request to the page /cron/execute/key/<secret_cron_key>. <secret_cron_key> is defined in cron.key entry inapplication/config/config.local.ini and is used to prevent unauthorized users from triggering the task.
    • In case it is not possible to setup cronjobs on your server, the fallback cron system will be activated by leaving the cron.key entry in application/config/config.local.ini setting empty. This means that cronjobs might be run with some probability on every request to the site. This feature is disabled in development mode.
  • Copy the file VERSION-example.txt to VERSION.txt and optionally update the new file. The content is used to inform the users of which version of the tool they are using.

Upgrading

Wizard

Before you start updating your project, it is recommended to shut it down and display to users the error page with HTTP status 503 (Temporarily unavailable).

Check if there is the table named phinxlog in your database. If not, your version is not probably compatible with update

Using FTP and Browser

  1. Obtain the update package by download or create it by running the $ robo create:update-zip command in the root folder of the cloned repository where the RoboFile.php is located.
  2. Backup the filesystem and the database. Download all content of your project via your favorite FTP client to a temporary directory on your local machine and make an export of your database with phpmyadmin, adminer or other favorite webtool.
  3. Update project files. Remove all files from destination directory, where the project runs. Then copy all files from extracted update package directory (dbjr-tool-update_v#.#.#) to the prepared destination folder. Don't forget to copy hidden files with name starting with "." in the update package folder if there are any. Finally restore your local configuration from previously made backup by copying:
    • application/configs/config.local.ini
    • application/configs/phinx.local.yml
    • media directory in www/media
    • logs directory in runtime/logs
    • .htaccess file in the root of the project
    • .htaccess file in the www directory
  4. Create writable directories in the runtime directory:
    • cache
    • sessions
  5. Comment out line with die() in www/runMigrations.php script to allow run DB migrations. You can edit this script in your FTP client or locally and then upload it if your client does not provide this functionality.
  6. Run DB migrations by visiting the site /www/runMigrations.php in the browser. Be aware of result of this operation displayed in the browser. In case the execution time limit in PHP is reached and phinx migration manager could not complete all migrations, the project may stop working. Please try to execute migrations again to complete the rest of them and pay attention to what phinx migration manager returns in its output to the browser.
  7. Uncomment line with die() to prevent running DB migrations script.

Using SSH and BASH

  1. Obtain the update package by download.
  2. Backup the filesystem and the database.
    • $ cp -R project_dir backup_dir
    • $ mysqldump -h 127.0.0.1 database_name > backup_dir/db_dump.sql
  3. Update project files. Remove all files from project directory. Then copy all files from extracted update package directory to the project directory. Don't forget to copy hidden files with name starting with . in the update package folder. $ mv tool-update/* project_dir/
  4. Restore configuration, media, logs and .htaccess from backup
    • $ cp backup_dir/application/configs/phinx.local.yml project_dir/application/configs
    • $ cp backup_dir/application/configs/config.local.ini project_dir/application/configs
    • $ cp -R backup_dir/www/media project_dir/www/media
    • $ cp backup_dir/.htaccess project_dir
    • $ cp backup_dir/www/.htaccess project_dir/www
    • $ cp backup_dir/runtime/logs project_dir/runtime
  5. Create writable directories in the runtime directory:
    • $ mkdir -m 755 runtime/cache
    • $ mkdir -m 755 runtime/sessions
  6. Run DB migrations by running $ vendor/bin/phinx migrate -c application/configs/phinx.local.yml -e production

No Wizard

Upgrading the tool version consists of the following steps:

  1. Updating the project files
  2. Building the application using $ robo build
  3. Running $ robo phinx:migrate production to apply database patches

Development

The recommended way to develop the tool is using Docker. The application in development mode is served at http://devel.localhost. First run of Docker can take a few minutes.

To build the documentation locally follow: https://help.github.com/articles/setting-up-your-github-pages-site-locally-with-jekyll/

Linux

The docker-compose tool is needed.

  • $ docker-compose up to start server
  • $ docker-compose stop to stop server

Windows and MacOS

It is recommended to use docker-compose-sync for better performance. Installation guide for specific operating system can be found on following websites:

docker-compose command is part of Docker and it is not required to install it again.

  • ./docker-compose-sync.sh start to start server
  • ./docker-compose-sync.sh stop to stop server

GEO functionality

This functionality requires some third party components, which are included.

Interactive maps are provided by javascript library Leaflet. Map tiles source url is set in application config.ini in the section osm.data_server_url. This is the endpoint, where the JS library retrieves map tiles from.

Static maps images with marker for previews are rendered with built-in PHP service, which uses the same endpoint for retrieving and caching the map tiles.

There is no need to have any account or another kind of authorization to access map tiles on free servers. There are also no strict quotas for usage. For better insurance of availability it is possible to host OSM data on the own server or use some commercial solution.

If the application runs over secured connection (https), the geolocation service provided by a web browser API is used in JS library to locate users. In case the application runs over http, this functionality will be probably unavailable.

Open Street Map (OSM) are licensed by Open Data Commons Open Database License (ODbL) and by Creative Commons 2.0 (CC-BY-SA)

External dependencies

This application uses external libraries and third party software. The list of all required software packages is available in special definition files.

  • composer.json
  • package.json

Licenses of used libraries and other third party software are available usually on the package manager web page or in the package repository.

  • For information about Composer package (defined in composer.json) visit please packagist.org and insert the name of the package
  • For information about Npm package (defined in package.json) visit please www.npmjs.com

epartool's People

Contributors

adamkudrna avatar bedrich-schindler avatar crishpeen avatar davidurban avatar dbjrdev avatar dependabot[bot] avatar fousjiri avatar mbohal avatar pipaltree avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

harryhoudini

epartool's Issues

Tighten MySQL settings

Presently there is no check of the db settings. This has to do with issues like:

  • db charset
  • db collation
  • strict_mode (and all the related settings)

There are collated columns all over the db and when running migration on a db that is not collated foreign keys sometimes can not be made. This particular case was fixed by this diff:

mb@mb-laptop ~/Projects/epartool/epartool (master ±1) ~> git diff
diff --git a/data/phinx-migrations/20180221091158_dbjr1358.php b/data/phinx-migrations/20180221091158_dbjr1358.php
index 3fb54e63..7352ddfa 100644
--- a/data/phinx-migrations/20180221091158_dbjr1358.php
+++ b/data/phinx-migrations/20180221091158_dbjr1358.php
@@ -10,7 +10,7 @@ class Dbjr1358 extends AbstractMigration
 CREATE TABLE `voting_button_set` (
   `id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   `consultation_id` int(10) unsigned NOT NULL,
-  `button_type` varchar(191) NOT NULL,
+  `button_type` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
   `points` int NOT NULL,
   `enabled` tinyint(1) NOT NULL,
   `label` text NULL
mb@mb-laptop ~/Projects/epartool/epartool (master ±1) ~>

Installer – run database build in separate steps

During installation and update process the db creation and migration tasks can take too long and then there can be PHP or webserver timeout.

The PHP timeout was hackishly solved by disabling it in the script, but there is no clean way to deal with the webserver timeout. The present situation therefore is that if the user disregards the webserver timeout and keeps on waiting, then the PHP script will likely eventually finish on the background and all will be OK. Of course the PHP script could be killed by the OS and the user has no way of knowing other then trying the installation out.

Ideally the db creation and migrations should be run in separate requests that will be triggered sequentially. JS could probably do this. Using JS would also make it reasonably easy to provide the user with a nice progress report.

Installer should explain what to do with cron key (show path)

The installer asks for a cron key or even allows to generate one, but it doesn't say what it is used for. You need to figure out from other sources, where to put it afterwards.
=> Installer should already contain the information on how the path to the cron script should be put together

Bug in viewing reactions: no snippet or timeline access

Showing reactions doesn't work anymore on latest deployment.

Steps to reproduce:

  1. On this page
    https://mitwirkung.dbjr.de/mitmachen/followup/index/kid/24
    Try to click on "Ansehen" (view) of any of the two follow-up documents. No reaction from the system. (The "Herunterladen" (download)) does work though).

  2. On this page
    https://mitwirkung.dbjr.de/mitmachen/input/show/kid/24/qid/779946/page/28
    Click on "Reaktionen ansehen" (view reactions) on any of the contributions - an empty page appears

URL of site should be autofilled as a proposal by default

There is the "website address" field on the general settings page: It is blank by default. Yet we would like to see that the installer autofills it, so that the admin user may only need to change it afterwards, if necessary.

You and I have never spoken about this before, so I consider it a new task request. I hope the description is clear and is hopefully easy to implement. I don't need an estimate for that, if it's quick to implement.

Specific text box is not shown on voting results page

150526 article editor shows specific option and one redundant option
150526 bug - specific text is missing

I found a problem with the article editing for voting results introduction. It has two elements:

  1. The consultation-specific text is apparently not shown in frontend. You can see the place for the missing text box in the “bug” screenshot attached, marked with green. Marked with blue you can see the general introduction to the voting results, which comes from an article in the general settings of the tool (“Erklärungstext Abstimmungsergebnisse (alle)”).
    In the consultation-specific article editor there is the option for the text (see screenshot, it’s the selected one in blue), but somehow it’s not shown in the frontend then.

  2. In the consultation-specific article editor there is one option that makes no sense there: in the screenshot attached it’s marked in red. It seems to be redundant to the above-mentioned general introduction to voting results. But a general introduction should not be found in consultation-specific article editor, right? So we don’t really know what it does or where it appears. From our point of view, the option that is marked by red should be deleted. Or is there something that we are missing here?

Option to remove /install folder by click should be added

When the install wizard went through there is a hint to delete the /install folder. Yet, users don't expect to have to use SFTP again - it complicates things a bit. Therefore, an option to remove the install folder by the system, should be added at the very last step.

Add relevant server info page into admin

Please add to the menu visible at /admin/settings a new entry Server info Where relevant info about the server will be listed:

  • PHP version
  • PHP memory settings
  • PHP enabled extensions
  • PHP server OS
  • MySQL version

This entry should be located at the bottom of the menu and should be visually separated

Facebook video validation is not working

Presently there is no way to validate if Facebook video is public. This is caused by broken mechanism that is supposed to check if video exists and if it is public. This was caused by changes in Facebook API,

With the new API the endpoint returns the following error:

(#10) This endpoint requires the 'pages_read_engagement' permission or the 'Page Public Content Access' feature. Refer to https://developers.facebook.com/docs/apps/review/login-permissions#manage-pages and https://developers.facebook.com/docs/apps/review/feature#reference-PAGES_ACCESS for details.

According to https://developers.facebook.com/docs/permissions/reference a Facebook app needs to be approved by Facebook in order to get the correct permissions to check if video is public. Although it seems strange, I could not find another way.

This means that:

  • users can not enter facebook videos
  • admins can not edit contributions containing facebook

Possible solutions:

  • drop support for Facebook videos
  • Figure out how to get the application approved and make sure all installations that use Facebook video get their Facebook application approved as well.

Passwort reset link should be valid for longer time (24hrs)

Deployments of the ePartool are often done by different people than those who will actually use it. The new users are often a bit too slow to setup their passwords, because the password reset links become invalid already after a few hours. A full day would be more useful.

google login not working

After selecting the account nothing happens and the user is not logged in. No flash message is shown.

Setting more secure headers

The ePartool has yet to adopt some more secure default settings. As mere HTTP deployments should not be supported anymore, some aspects could be upgraded:

  • HSTS headers
  • cookies only secure
  • protection against various Cross-Site attacks

The following additions to a .htaccess do most of it, but we should be clear whether that approach is the right place. Any thoughts/considerations?

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains" env=HTTPS
  Header always edit Set-Cookie (.*) "$1; HTTPOnly; Secure"
  Header set X-Frame-Options "sameorigin"
  Header set Referrer-Policy "same-origin"
  Header set X-XSS-Protection "1; mode=block"
  Header set X-Permitted-Cross-Domain-Policies "none"
</IfModule>

User should be able to delete user account herself

Currently users can't close their accounts without technical support of an admin. Yet such self-managed procedure should be made available. Consequences towards anonymising existing contributions, comments and votes are to be taken into account.

Allow some HTML for motto and phase names

Some minor feature issue that I would like to report:

  • The page "motto" and phase names sometimes would require better hyphenation or line breaks. The automatic hyphenation in browsers sometimes creates grammatically wrong breaks in words. HTML has entities for that, e.g. the &hyp; to make breaking suggestions. Unfortunately the entities are displayed as plain text (also unicode characters) – any suggestion how we to make it possible?
  • We have gotten requests to allow
    or bold / italics /underline also in the page "motto". Maybe it's the same case like the one explained before.

I'm aware that this may increase the risk that admin users break the design or layout. That's why I would like to restrict it to HTML entities and only the four formating aspects mentioned in point 2.

This issue is not urgent, but a task for whenever resources are free. If the implementation takes more than two hours, I would need an information beforehand.

Rotate logs

There should be one log file per day and they should be removed after 30 days by cronjob.

The 30 day period should be configurable via config.local.ini. If set to 0, the rotation should be turned off.

Upload to pre-defined "misc" media folder fails

A fresh install of v4.11.1 on PHP 7.2 - the upload of a file to the pre-defined "misc" folder throws an error 500.

(If I understand the application.log correctly, the SQL insert wants a consultation id, but doesn't get any?)

2018-12-06T15:59:32+01:00 CRIT (2): PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1 in .../vendor/zendframework/zendframework1/library/Zend/Db/Statement/Pdo.php:228
Stack trace:
#0 .../vendor/zendframework/zendframework1/library/Zend/Db/Statement/Pdo.php(228): PDOStatement->execute(Array)
#1 .../vendor/zendframework/zendframework1/library/Zend/Db/Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array)
#2 .../vendor/zendframework/zendframework1/library/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#3 .../vendor/zendframework/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT cnslt....', Array)
#4 .../vendor/zendframework/zendframework1/library/Zend/Db/Table/Abstract.php(1577): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#5 .../vendor/zendframework/zendframework1/library/Zend/Db/Table/Abstract.php(1392): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#6 .../application/modules/admin/forms/Media/Upload.php(32): Zend_Db_Table_Abstract->fetchAll(Object(Zend_Db_Table_Select))
#7 .../vendor/zendframework/zendframework1/library/Zend/Form.php(239): Admin_Form_Media_Upload->init()
#8 .../library/Dbjr/Form.php(28): Zend_Form->__construct(NULL)
#9 .../application/modules/admin/controllers/MediaController.php(302): Dbjr_Form->__construct()
#10 .../vendor/zendframework/zendframework1/library/Zend/Controller/Action.php(516): Admin_MediaController->uploadAction()
#11 .../vendor/zendframework/zendframework1/library/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('uploadAction')
#12 .../vendor/zendframework/zendframework1/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#13 .../vendor/zendframework/zendframework1/library/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#14 .../vendor/zendframework/zendframework1/library/Zend/Application.php(384): Zend_Application_Bootstrap_Bootstrap->run()
#15 .../www/index.php(31): Zend_Application->run()
#16 {main}

Next Zend_Db_Statement_Exception: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1, query was: SELECT cnslt.kid, cnslt.titl FROM cnslt WHERE (proj LIKE '%xx%') AND (kid IN ()) in .../vendor/zendframework/zendframework1/library/Zend/Db/Statement/Pdo.php:235
Stack trace:
#0 .../vendor/zendframework/zendframework1/library/Zend/Db/Statement.php(303): Zend_Db_Statement_Pdo->_execute(Array)
#1 .../vendor/zendframework/zendframework1/library/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#2 .../vendor/zendframework/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query('SELECT cnslt....', Array)
#3 .../vendor/zendframework/zendframework1/library/Zend/Db/Table/Abstract.php(1577): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#4 .../vendor/zendframework/zendframework1/library/Zend/Db/Table/Abstract.php(1392): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#5 .../application/modules/admin/forms/Media/Upload.php(32): Zend_Db_Table_Abstract->fetchAll(Object(Zend_Db_Table_Select))
#6 .../vendor/zendframework/zendframework1/library/Zend/Form.php(239): Admin_Form_Media_Upload->init()
#7 .../library/Dbjr/Form.php(28): Zend_Form->__construct(NULL)
#8 .../application/modules/admin/controllers/MediaController.php(302): Dbjr_Form->__construct()
#9 .../vendor/zendframework/zendframework1/library/Zend/Controller/Action.php(516): Admin_MediaController->uploadAction()
#10 .../vendor/zendframework/zendframework1/library/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('uploadAction')
#11 .../vendor/zendframework/zendframework1/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#12 .../vendor/zendframework/zendframework1/library/Zend/Application/Bootstrap/Bootstrap.php(105): Zend_Controller_Front->dispatch()
#13 .../vendor/zendframework/zendframework1/library/Zend/Application.php(384): Zend_Application_Bootstrap_Bootstrap->run()
#14 .../www/index.php(31): Zend_Application->run()
#15 {main}

Remove Facebook login

In the sight of the several data scandals of Facebook in the recent weeks (I'm counting four or five) and considering that it is not successfully used by any of our known deployments, we would like you to remove the Facebook login structure in the ePartool.

Figure out what to do with premailer dependency

Currently the project depends on the grunt-premailer npm package which depends on ruby and the premailer gem.

Currently ruby is not installed in the docker container and the grunt mail command therefore fails. There are two options how to resolve this:

  1. Get rid of the grunt-premailer dependency and build mail templates by some other means
  2. Install ruby and the required premailer gem into the docker containers

I think solution 1. is preferable as it would simplify the stack and make development and contributions easier.

Add license description texts

License descriptions need to be updated:

We need the following texts translated:

Creative Commons license 4.0: attribution, non-commercial

The contributions are published under a <a href="http://creativecommons.org/licenses/by-nc/4.0/deed.en" target="_blank" title="More about creative commons license">creative commons license</a>. This means that your contribution may be re-used in summaries and publications for non-commercial use. As all contributions are published anonymously on this page, this website will be referred to as the source when re-using contributions.

for the following languages:

  • fr_FR
  • pl_PL
  • cs_CZ
  • ru_RU
  • ar_AE

Root folder should contain basic index.* file for information

The ePartool's root directory does not contain any index.php or index.html file. Instead, a .htaccess redirect does the job of pointing to a default document. However, several instances have reported problems with installing the ePartool, because they just didn't see the .htaccess in root. (It occurs with people who use the entire ePartool zip, but not with the web-downloader it does not occur, though)

Therefore it would be useful to have a basic index.php or index.html that says something like "if you see this page, then something is wrong about your configuration. Please check whether the .htaccess is rightly in place."

Email attachments not being sent correctly

When manually sending email from the administration to a particular user it is possible to attach a file from the media centre.

This file is not attached correctly and can not be opened by the addressee.

IE 11 support

Does the tool need to support Internet Explorer? Presently it partially does as the only things that do not work are:

  • reaction timeline
  • administration

Dropping support for IE would allow us to not include some polyfills. This would make the JS code smaller and the load times would decrease. Also working on the project would be easier…

Additional state of info bubble "Contribute now"

Context:
Currently, there is an info bubble over the Contribution phase when the contribution period is running. It says "Contribute now" (or something like that). A similar bubble pops up atop the voting phase, when voting is on.

Several projects have reported to us that a full voting is too complex for their needs, so they would use the "Support" feature as a kind of informal voting. However, their problem is to make it transparent to users that it's not the voting that they need to reach out for, but that the users need to go to the "Contribution" phase and click the support buttons there.

Concrete task:
The wish is that the info bubble atop the "Contribution phase" does automatically change its label. Priority is that it says the "Contribute now" message, just as it is now. But then, if the contribution phase is over, it should check whether the support phase is currently on, and show a bubble saying "Support now" / "Jetzt unterstützen".

Start running builds via Actions

Migrate from Jenkins to GH action:

  • run tests for all supported versions of PHP and nightly
  • add build shields to README.md
  • produce install and update wizzards
  • migrate install and update to GH releases section
  • update file RELEASING.md

Add translations of validation messages for zend (AR, PL)

It is necessary to translate validation messages for languages that are not natively supported by Zend. The missing languages are:

  • Arabic
  • Polish

In the meantime English is used as a fallback.
Attached is a file that contains all the strings for English. GitHub does not allow attaching PHP files so I had to rename it.

Zend_Validate.php.txt

Video services not working correctly

When entering videos in discussion:

  1. It is possible to enable video service (i.e. vime) that has no credentials entered. That causes an ugly
    error message.

2. Also I was unable to enter a facebook video as I was getting "not_public" even if it is public.

  1. Also I was unable to enter vimeo video as I was getting "api_unavailable"

screenshot from 2018-07-26 18-54-26
screenshot from 2018-07-26 18-57-16

Last step of install wizard should be to delete itself

At the moment the install wizard tells you in its last step to go to the server and delete the /install dir. However, it would be much more helpful, if the install wizard offers to do that itself – if the rights for deleting are available.

The wizard deleter should try to delete the following:

  • /install dir
  • epartool-downloader.php script in root (from installer perspective: it's a hierarchy step above, so it's ../epartool-downloader.php )

Modal should be closable by Esc key

In the screen shown bellow the modal overlay can only be closed by clicking the cross with mouse. It would be helpfull if it could also be closed by pressing the Esc key.

Bootstrap modal does that natively, so there is likely some error somewhere.
screenshot from 2018-03-08 09-58-32

Update node current LTS and all npm packages

1.Currently it uses version 8 for building assets. This version is not supported anymore.
2. We should not depend on the bower package manager. It is not supported anymore. We should depend for all packages on the npm registry.

phinx.local.ymp permission detection in installation wizard

During installation there is no mechanism to detect permissions of application/configs/phinx.local.yml.

If the permissions are wrong the user is not informed and general error Something went wrong, we could not create the installation. is displayed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.