QUIQQER issueshttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues2023-11-28T14:35:36Zhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/896Media: Optimierungen2023-11-28T14:35:36ZPatrick MüllerMedia: OptimierungenOptimierungsmöglichkeiten für den Media-Bereich mit **sehr vielen** Ordnern (z.B. für Shop-Systeme mit vielen Produkten):
* [ ] Bei vielen Ordnern in einer Ebene die Ordner in Blöcke aufteilen und für jeden Block einen eigenen Ordner er...Optimierungsmöglichkeiten für den Media-Bereich mit **sehr vielen** Ordnern (z.B. für Shop-Systeme mit vielen Produkten):
* [ ] Bei vielen Ordnern in einer Ebene die Ordner in Blöcke aufteilen und für jeden Block einen eigenen Ordner erstellen (z.B. je 1000 Stück)
* [x] ~~Versteckte Ordner einführen, die im Backend nur auf Anforderung geladen/angezeigt werden (wäre z.B. dann für Produkt-Ordner der Fall)~~ -> moved to https://dev.quiqqer.com/quiqqer/quiqqer/issues/944
* [ ] Ajax-Request `ajax_media_breadcrumb` braucht je nach Anzahl der Media-Elemente und Ordnertiefe sehr lange! Es werden für den Request viele unnötige Operationen ausgeführt.
Für weitere Fragen bitte an Mor wenden.1.12 (L* L*)Henning LeutzHenning Leutzhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/894E-Mail Templates: Dokumentation anpassen2019-07-26T12:18:11ZPatrick MüllerE-Mail Templates: Dokumentation anpassenhttps://dev.quiqqer.com/quiqqer/quiqqer/wikis/email-layouts
Bitte anpassen auf die neue Struktur und die neuen/veränderten Template-Events!https://dev.quiqqer.com/quiqqer/quiqqer/wikis/email-layouts
Bitte anpassen auf die neue Struktur und die neuen/veränderten Template-Events!Michael DanielczokMichael Danielczokhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/887User-Based Timezones2024-01-25T07:38:49ZJan WennrichUser-Based TimezonesQUIQQER currently only supports a server-wide timezone.
If users from different timezones interact with the system, this may lead to confusions.
For example: A CRON is executed at 14:00 server time. A person from the USA (-10 hours t...QUIQQER currently only supports a server-wide timezone.
If users from different timezones interact with the system, this may lead to confusions.
For example: A CRON is executed at 14:00 server time. A person from the USA (-10 hours time difference to server time) views the CRON-log. The CRON was executed in the future for him since his current time is 4:00 and the CRON was executed at 14:00 of the same day.
There needs to be a setting for users which stores the user's timezone. This should be editable by the user himself and other administrators. And maybe set by default depending on his IP (?). Furthermore it needs to be added to the frontend-users module.
Then, whenever handling times and dates, a central instance has to be used to calculate the correct timezone for displaying and saving (!) dates. Maybe also storing the timezone and not only a (UNIX?) timestamp could ease that process.
-------------
This feature would be useful for the calendar module, the NerdSpot project and probably all the eCommerce stuff.
------------
FYI @mor @henbug1.11 (K* K*)https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/884Produkttest / neuer Nutzer: Unklarheiten, Unstimmigkeiten in der Administration2019-06-25T08:15:04ZPCSG PraktikantProdukttest / neuer Nutzer: Unklarheiten, Unstimmigkeiten in der AdministrationLena hat zum ersten Mal Quiqqer verwendet und ist über folgende Dinge gestolpert:
* Button zur Vorschau von Bildern / Seiten an unterschiedlichen Stellen
*Lena hat zum ersten Mal Quiqqer verwendet und ist über folgende Dinge gestolpert:
* Button zur Vorschau von Bildern / Seiten an unterschiedlichen Stellen
*https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/881Bilder-Bug2019-06-18T19:02:28ZMark LeibleinBilder-BugGenutzt im Firefox / Windows / Desktop.
Wenn man im Content-Bereich ein Bild einfügt (über Media), kann man dieses meist nicht anklicken, d.h. es wird nicht erfasst/markiert. Wenn man öfter drauf klickt, wird es gedoppelt. Im Bild zu se...Genutzt im Firefox / Windows / Desktop.
Wenn man im Content-Bereich ein Bild einfügt (über Media), kann man dieses meist nicht anklicken, d.h. es wird nicht erfasst/markiert. Wenn man öfter drauf klickt, wird es gedoppelt. Im Bild zu sehen an dem großen Bild oben, welches in Kopie erzeugt wurde (= Orginalgröße des kleinen Bildes unten). Wenn ich ein bisschen rumklicke, verschwindet die Bild-Kopie wieder.
![image](/uploads/555484a966dcfbe69c88b10ea3301691/image.png)https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/880ReAuth Function2023-10-31T08:24:06ZMoritz ScholzReAuth FunctionIt would be nice if whenever the user session has expired an authentication window would be displayed automatically. Currently this is only the case if the user sends a request that requires authentication.
This could be done e.g. by a ...It would be nice if whenever the user session has expired an authentication window would be displayed automatically. Currently this is only the case if the user sends a request that requires authentication.
This could be done e.g. by a regular request when a user is logged in. However, this request must pass urgently after the session renewal because otherwise the session would always be extended.Henning LeutzHenning Leutzhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/877package/quiqqer/portfolio/bin/controls/Portfolio kann durch mehrfaches drueck...2019-06-12T13:35:14ZGerd Krausepackage/quiqqer/portfolio/bin/controls/Portfolio kann durch mehrfaches druecken des Buttons Mehr zum Absturz gebracht werdenMehrfaches druecken des Buttons Mehr fuehrt zum Absturz des Controls:
```package/quiqqer/portfolio/bin/controls/Portfolio```
![image](/uploads/29debfc4d3feabf71967c25a748e57a3/image.png)Mehrfaches druecken des Buttons Mehr fuehrt zum Absturz des Controls:
```package/quiqqer/portfolio/bin/controls/Portfolio```
![image](/uploads/29debfc4d3feabf71967c25a748e57a3/image.png)Michael DanielczokMichael Danielczokhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/870Add autocompletion to quiqqer.php2023-11-28T14:31:51ZJan WennrichAdd autocompletion to quiqqer.phpWhen working with the CLI and calling quiqqer.php I'd like to have auto-completion for the commands that can be called.
It seems like it can be implemented using the ["readline_completion_function"-method](https://www.php.net/manual/en...When working with the CLI and calling quiqqer.php I'd like to have auto-completion for the commands that can be called.
It seems like it can be implemented using the ["readline_completion_function"-method](https://www.php.net/manual/en/function.readline-completion-function.php).
How do you think about implementing this, @henbug?1.12 (L* L*)https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/858Installation eines großen Pakets (urlshortener) über den Store bricht ab2023-10-31T08:23:58ZJan WennrichInstallation eines großen Pakets (urlshortener) über den Store bricht ab```
==> ./debug-2019-04-12.log <==
[2019-04-12 12:20:16] - DEBUG - Install package quiqqer/urlshortener -> install
{
"request": "http:\/\/quiqqer-test.jan.pcsg.eu\/admin\/ajax.php",
"errorFilename": false,
"userId": 92699462...```
==> ./debug-2019-04-12.log <==
[2019-04-12 12:20:16] - DEBUG - Install package quiqqer/urlshortener -> install
{
"request": "http:\/\/quiqqer-test.jan.pcsg.eu\/admin\/ajax.php",
"errorFilename": false,
"userId": 926994626,
"username": "admin",
"IP": "127.0.0.1"
}
==> ./error-2019-04-12.log <==
[2019-04-12 12:20:16] - ERROR - Lockclient encountered a curl error
{
"url": "https:\/\/lock.quiqqer.com\/\/generate",
"error": "Operation timed out after 30000 milliseconds with 0 bytes received",
"request": "http:\/\/quiqqer-test.jan.pcsg.eu\/admin\/ajax.php",
"errorFilename": false,
"userId": 926994626,
"username": "admin",
"IP": "127.0.0.1"
}
[12-Apr-2019 12:20:16 Europe/Berlin] PHP Fatal error: Uncaught Error: Class 'QUI\Lockclient\Exceptions\LockServerException' not found in /var/www/quiqqer-test/packages/quiqqer/quiqqer/lib/QUI/Package/Manager.php:1963
Stack trace:
#0 /var/www/quiqqer-test/packages/quiqqer/quiqqer/lib/QUI/Package/Manager.php(1021): QUI\Package\Manager->composerRequireOrInstall('quiqqer/urlshor...', '1.0.3')
#1 /var/www/quiqqer-test/packages/quiqqer/quiqqer/admin/ajax/system/packages/installPackage.php(24): QUI\Package\Manager->install('quiqqer/urlshor...', '1.0.3')
#2 /var/www/quiqqer-test/packages/quiqqer/quiqqer/lib/QUI/Ajax.php(346): {closure}('quiqqer/urlshor...', '1.0.3', false)
#3 /var/www/quiqqer-test/packages/quiqqer/quiqqer/lib/QUI/Ajax.php(207): QUI\Ajax->callRequestFunction('ajax_system_pac...')
#4 /var/www/quiqqer-test/packages/quiqqer/quiqqer/lib/ajax.php(101): QUI\Ajax->call()
#5 /var/www/quiqqer-test/packages/quiqqer/quiqqer/admin/ajax.php(21): require('/var/www/quiqqe...')
#6 {main}
thrown in /var/www/quiqqer-test/packages/quiqqer/quiqqer/lib/QUI/Package/Manager.php on line 1963
==> ./warning-2019-04-12.log <==
[2019-04-12 12:20:16] - WARNING - Translation file for /var/www/quiqqer-test/var/locale/en_EN/LC_MESSAGES/quiqqer_colorpicker.mo not found.
{
"file": "\/var\/www\/quiqqer-test\/var\/locale\/en_EN\/LC_MESSAGES\/quiqqer_colorpicker.mo",
"request": "http:\/\/quiqqer-test.jan.pcsg.eu\/admin\/ajax.php",
"errorFilename": false,
"userId": false,
"username": "nobody",
"IP": "127.0.0.1"
}
```
Die Installation kleinerer Pakete (facebook-auth) funktioniert
--------------
Nicht sicher ob dies ein QUIQQER-Issue ist. Wenn nicht, dann bitte verschiebenHenning LeutzHenning Leutzhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/855Neues Projekt mit Demodata anlegen timeoutet2023-10-31T08:20:16ZJan WennrichNeues Projekt mit Demodata anlegen timeoutet![image](https://dev.quiqqer.com/quiqqer/quiqqer/uploads/8c12da1ab16e1e311fb5e7317f83014e/image.png)
Beim zweiten Versuch ohne Demodata ging es.
Erster Versuch taucht nun auch in der Projektverwaltung auf. Da wird wohl der Loader oder ...![image](https://dev.quiqqer.com/quiqqer/quiqqer/uploads/8c12da1ab16e1e311fb5e7317f83014e/image.png)
Beim zweiten Versuch ohne Demodata ging es.
Erster Versuch taucht nun auch in der Projektverwaltung auf. Da wird wohl der Loader oder so nicht richtig geschlossen, wenn Demodaten nicht unterstützt werden.Henning LeutzHenning Leutzhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/843Custom AccessFile names (.htaccess) aren't supported2019-03-19T13:38:52ZJan WennrichCustom AccessFile names (.htaccess) aren't supportedIn the Apache configuration a name for the AccessFile can be set (see https://httpd.apache.org/docs/2.4/de/mod/core.html#accessfilename). It defaults to `.htaccess`. Therefore the .htaccess file does not have to be named .htaccess. QUIQQ...In the Apache configuration a name for the AccessFile can be set (see https://httpd.apache.org/docs/2.4/de/mod/core.html#accessfilename). It defaults to `.htaccess`. Therefore the .htaccess file does not have to be named .htaccess. QUIQQER currently does not support custom AccessFile-names.
There should be a setting where the administrator can specify how the AccessFile is named.
Also the setup needs to take that name in account when creating that .ht(access)-file.https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/832Ajax: check if requiring files has still to be done this way2019-08-21T10:48:11ZJan WennrichAjax: check if requiring files has still to be done this way@mor wants to check with you if the requiring of ajax function/files still has to be done this way: https://dev.quiqqer.com/quiqqer/quiqqer/blob/master/lib/ajax.php#L43@mor wants to check with you if the requiring of ajax function/files still has to be done this way: https://dev.quiqqer.com/quiqqer/quiqqer/blob/master/lib/ajax.php#L43Moritz ScholzMoritz Scholzhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/824A JavaScript Callback can only be called once2020-04-23T11:33:28ZJan WennrichA JavaScript Callback can only be called onceSince the JavaScript callbacks can be called with parameters it's no longer possible to call a callback multiple times.
The reason is that previously the array stored only the names of the callbacks, thus allowing one callback to ...Since the JavaScript callbacks can be called with parameters it's no longer possible to call a callback multiple times.
The reason is that previously the array stored only the names of the callbacks, thus allowing one callback to exist multiple times in the array.
After introducing parameters to the callbacks, the structure of the array changed. Now the callbacks' name is the key of the array's entry and it's parameters are the value.
If the same callback is added a second time, the previous entry is overwritten.
Therefore the structure of the array needs another rework.
Related source code:
~~https://dev.quiqqer.com/quiqqer/quiqqer/blob/dev/lib/QUI/Ajax.php#L380~~
Permalink: https://dev.quiqqer.com/quiqqer/quiqqer/blob/60d073c2f974671cab28a04c959bf2d75a3b43ed/lib/QUI/Ajax.php#L380Patrick MüllerPatrick Müllerhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/805composer.quiqqer und npm.quiqqer Checkinstance2019-01-02T14:10:03ZHenning Leutzcomposer.quiqqer und npm.quiqqer CheckinstanceFür Paketserver nur Pakete zu lassen die auch geprüft wurden.
Beispiel:
- Vor npm.quiqqer ein proxy schalten der nur bestimmte Pakete zu lässtFür Paketserver nur Pakete zu lassen die auch geprüft wurden.
Beispiel:
- Vor npm.quiqqer ein proxy schalten der nur bestimmte Pakete zu lässthttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/792Get User by attribute2018-11-19T11:52:57ZJan WennrichGet User by attributeI added some additional user attributes via the `user.xml` file.
As far as I know it is not possible to get a User by one of these custom properties, right?
So I can do:
```
Users\Manager->get()
Users\Manager->getUserByMail()
User...I added some additional user attributes via the `user.xml` file.
As far as I know it is not possible to get a User by one of these custom properties, right?
So I can do:
```
Users\Manager->get()
Users\Manager->getUserByMail()
Users\Manager->getUserByName()
```
But it's not possible to do something like:
```
Users\Manager->getByAttribute('my.custom.attribute', 123)
```
to get the user having the attribute `my.custom.attribute` with a value of `123`.
----------
I know these attributes are stored as JSON in a single database field so it's not easy/possible to query them.
But recently I found out about MySQL supporting JSON and having some handy JSON functions (such as `JSON_EXTRACT`). These functions would make it possible to query JSON data as well.
For example:
If have the following data in my table:
| id | data |
|----|-----------------------------------------------------------|
| 1 | {"my.attribute": false, "some.other.attribute": "blargh"} |
| 2 | {"my-attribute": false, "some.other.attribute": "blargh"} |
| 3 | {"my-attribute": true, "some.other.attribute": "blargh"} |
Using this query
```mysql
SELECT * FROM my_table WHERE JSON_EXTRACT(data, '$."my.attribute"') = true;
```
Returns:
| id | data |
|----|-----------------------------------------------------------|
| 3 | {"my.attribute": true, "some.other.attribute": "blargh"} |
----------------
**Conclusion:**
This means querying by attributes would be possible.
I didn't check the performance yet, but I read about MySQL being able to cache and optimize queries if you define keys (for/inside the JSON?).
I guess the performance would be even better if the type of the attribute column would be `JSON`.
Only caveat is that the JSON functionality became part of MySQL in version 5.7 and I'm not sure which MySQL versions QUIQQER tries to support.
What do you think of integrating this into QUIQQER, @henbug (and maybe @mor)https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/790Video Ideas2018-11-18T14:34:11ZJan WennrichVideo IdeasTo anyone who wants to help us, we are always looking for active support. Even if you are not a professional developer, anyone can support us!
Tutorials for example are a good start. We want to make it as easy as possible for everyone t...To anyone who wants to help us, we are always looking for active support. Even if you are not a professional developer, anyone can support us!
Tutorials for example are a good start. We want to make it as easy as possible for everyone to use QUIQQER. If you have no idea which kind of tutorials you could create, here is a list of videos that would help anyone
* [ ] How to install QUIQQER?
* [ ] How to create my first package?
* [ ] ow to start a blog with QUIQQER?
* [ ] My first SaaS
* [ ] CRON
* [ ] REST
* [ ] Queues
* [ ] How to create an app from my homepage?
* [ ] Google XML sitemap
* [ ] How to speed up my QUIQQER page?https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/789Calculate folder size with a cron2023-12-22T15:18:23ZHenning LeutzCalculate folder size with a cronSince oversized folders cannot be queried via the file system, it should be possible to calculate the folder size via a cron.
The query about the file system is depending on the files. The current solution works for smaller to medium si...Since oversized folders cannot be queried via the file system, it should be possible to calculate the folder size via a cron.
The query about the file system is depending on the files. The current solution works for smaller to medium sized pages. For pages with more than 10,000 files the calculation takes a few seconds.
This is not very advantageous. The cron should then write the size of the folder into the media table. If there is the size property of a folder this must be used and should not be passed over the filesystem.
- [ ] Extend the media database table with a size field
- [ ] Create a media size calulation cron
It must be verified whether queues can also be used.Jan WennrichJan Wennrich2024-01-22https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/775Add API to generate demodata during Project creation.2019-01-21T11:36:13ZFlorian BognerAdd API to generate demodata during Project creation.# API: Demodata
## Description
Template cevelopers should be able to provide a config file, which includes basic demo data to create a fresh QUIQQER instance matching the visual style of the template.
This should include:
* Sites
* Bri...# API: Demodata
## Description
Template cevelopers should be able to provide a config file, which includes basic demo data to create a fresh QUIQQER instance matching the visual style of the template.
This should include:
* Sites
* Bricks
* Template settings
* Project settings
## Implementation
### Config files
The config files will be implemented as XML files at first, but we may include more formats (JSON and YAML) later.
The config files will be placed in the template package.
Templates that provide demo data need to publish this fact by adding an entry into their `extra`section within their composer.json package. This allows us to check the templates ability to provide demo data without unpacking it first.
### 'Big' QUIQQER Setup
The Setup will check if the desired template supports demo data when configuring the preset (web and console).
If the template does provide data, the user will be prompted if he wishes to install the demo data or not.
### Admin interface
The "Create Project" dialog will be extended by the same method:
* Allow template selection
* If template supports demo data -> display checkbox
* If user ticks checkbox -> install demo data
### Create data
The data will be consumed during the Projectsetup within QUIQQER.
The config file will be parsed and the according steps will be taken (Site creation, brick insertion etc)
## Example XML
Provide an example XML before implementation start, to allow further discussion and give @michael.daniel the chance to suggest changes and start developing XML configs for his templates.
@mor , @henbug Bitte einmal gegen prüfenFlorian BognerFlorian Bognerhttps://dev.quiqqer.com/quiqqer/quiqqer/-/issues/763Google AMP und/oder Facebook Instant Articles Seiten(Typen)2018-10-04T04:28:40ZJan WennrichGoogle AMP und/oder Facebook Instant Articles Seiten(Typen)Für schnelle Seitenaufrufe fände ich es interessant, wenn man seine Seiten auch als Google Accelerated Media Pages oder Facebook Instant Articles anbieten könnte.
Siehe dazu:
https://www.ampproject.org/docs/fundamentals/converting ...Für schnelle Seitenaufrufe fände ich es interessant, wenn man seine Seiten auch als Google Accelerated Media Pages oder Facebook Instant Articles anbieten könnte.
Siehe dazu:
https://www.ampproject.org/docs/fundamentals/converting
https://developers.facebook.com/docs/instant-articles/guides/importing
Was haltet ihr davon, @mor und @henbug?https://dev.quiqqer.com/quiqqer/quiqqer/-/issues/751Mediabereich: Dateinamen mit Endung in Liste anzeigen2019-01-21T09:42:21ZMoritz ScholzMediabereich: Dateinamen mit Endung in Liste anzeigenIm Backend sollte die Dateiendung an den namen angehängt werden, dies erleichtert das filtern und suchen nach Dateien.Im Backend sollte die Dateiendung an den namen angehängt werden, dies erleichtert das filtern und suchen nach Dateien.