quantacms / quanta Goto Github PK
View Code? Open in Web Editor NEWAn innovative, DB-free CMS for web and application development, based on the principles of Quantum physics.
Home Page: http://www.quantacms.com
License: MIT License
An innovative, DB-free CMS for web and application development, based on the principles of Quantum physics.
Home Page: http://www.quantacms.com
License: MIT License
In order to support exposed filters and advanced querying of content, we need to create ElasticSearch support in Quanta.
This feature should include at very least:
Will then be extended with other attributes and features.
Create a "blog" install profile with a nice layout.
At the moment, the [INPUT|type=file] field, being used for drag & drop / multiple file uploads, can only be used inside a Shadow form.
This happens because the javascript needed by this input is loaded inside an invisible shadow tab:
https://github.com/quantacms/quanta/blob/master/engine/modules/core/node/tpl/node_data.inc
We need to make this more consistent, so that:
Write all the documentation required so that Quanta user can make good use of the powerful grid module.
Unfortunately Froala, the wysiwyg editor that we have been using so far, can not be used for open source projects.
We need an alternative, as much professional and clean looking as possible.
https://techwiser.com/best-wysiwyg-html-editor-open-source/
This can be a starting point to test stuff out.
We need to integrate an automated coding style check (i.e. PHPCodeSniffer) and add the check in a git pre-push hook, so that it's impossible to commit wrong code.
In the localization module, we recently introduced the t function as a wrapper for translatable text.
While we still didn't integrate po management, it would be useful to start wrapping all translatable strings in t().
We need the garbage collector to become an useful and powerful tool, able to get rid of whatever is unused and consuming resources.
A good starting point would be removing automatically all the thumbnails related to nodes that are not existing anymore (i.e. deleted nodes).
Step to reproduce
Go to the bottom of the page, in the footer, click on the link Github community.
Response
404 - File not found
the hook_qtag function allows modules to interact with qtags while they are being rendered, .
I.e. the no_amp attribute can be applied to any tag to prevent it from appearing when user is navigating in an AMP mode.
i.e.
[LINK|no_amp:home]
The problem comes when you want to setup an attribute inside the qtag rendering itself,
function qtag_MYQTAG($env, $target, $attributes) {
$attributes['no_amp'] = TRUE;
....
}
While formally correct (and very useful) this won't work, because the hook_qtag is ran BEFORE the qtag is actually rendered, so the attribute no_amp (from the above example) won't exist yet.
We need a smarter way to attach parameters inside the qtag definition as well.
Doctor check should make sure that file system requirements are met:
Use hook_doctor_check() for integrating the checks above.
We have a "temporary form" tab that we are using to store node's system metadata and run shadow javascripts. This approach was actually temporary and looks weird. We need a smarter solution for making it an "invisible" tab.
A qtag can be filtered using the access module:
i.e.
[QTAG|filter=role@logged]
The filter are currently defined in access.hook.inc
We need to create a hook (i.e. hook_access_filters()) , so that each module can define its own custom filters.
Currently we are using a standard MD5 / salt algorithm to store passwords.
It would be good to let the user choose a personal algorithm in his modules, to open the way to different, customizable encryption methods.
Pass $env variable to the passwordEncrypt() method, wherever it's called (so it will look like -passwordEncrypt($env, $pass)
Create a hook function that will allow other modules to change the default algorithm
so it will look something like this
$vars = array('string' => $string)
$env->hook('passwordEncrypt', &$vars)
if (!isset($vars['encrypted_string'])) {
$encrypted_string = substr((md5(substr($pass, 0, 5) . 'ABC' . substr($pass, 5, 2) . 'nginE')) . md5($pass), 0, 50);
}
else {
$encrypted_string = $vars['encrypted_string'];
}
return $encrypted_string;
We need to integrate Behat tests (using composer) in Quanta, in order to facilitate testing, preventing regressions, allow continuous integration, etc.
5-10 basic tests with custom behaviors (i.e. login, add node, etc.) would be a good start.
Integration of PhantomJS or similar library would also be benefical, for testing all Quanta features on an emulated browser.
Is there a way to span tags into multiple rows? I'm not sure if it's currently available. I tried but the tags were not rendered.
At times your qtags might become very lengthy. It would be nice to span it into multiple lines for readability sake.
An example:
[MENU|links={LINK|title=about:about}---{LINK|title=work:work}---{LINK|title=services:services}---{LINK|title=partners:partners}---{LINK|title=blog:blog}---{LINK|title=contact:contact}|menu_class=menu text-center...]
Into something like:
[MENU
|links={LINK|title=about:about}---{LINK|title=work:work}---{LINK|title=services:services}---{LINK|title=partners:partners}---{LINK|title=blog:blog}---{LINK|title=contact:contact}
|menu_class=menu text-center...
]
Or:
[MENU
|links=
{LINK|title=about:about}---
{LINK|title=work:work}---
{LINK|title=services:services}---
{LINK|title=partners:partners}---
{LINK|title=blog:blog}---
{LINK|title=contact:contact}
|menu_class=menu text-center...
]
The [LINK] qtag is growing big and getting a bit messy.
We need to convert it to an object oriented approach, creating a new class (Link.class.inc), eventually in a separated link module, to handle all the attributes and parameters, and render them appropriately.
At the moment, login and logout action, after being performed, redirect the user to the homepage.
We need to support for the [LOGIN] qTag a redirect attribute (as we do with the [REGISTER] qTag) allowing to setup a target for redirecting the user after a successful login/logout.
Integrate with Docker for easy delivery & deployment
The OPERATIONS qtag renders in sequence;
Currently only ADD qtag create a correct output -> a ⊕ icon.
The other 2 tags renders as the ADD qtag icon code, "⊕", instead of edit and delete icon.
I think that it deals also with filter_xss function...
Qtags are Quanta's core feature, and they are extremely powerful - but from great power, comes great responsability, especially when we consider that Qtags can be added (by design) anywhere, included the body, comments, etc. - and therefore, are virtually accessible to any registered and non registered user of a Quanta web application.
That's why we need to walk through the whole list of core qTags:
https://www.quantacms.com/qtags-overview/
and perform a security check of each of them.
It would not be acceptable in example if a qTag was discovered being able to access files and folders outside of its scope, or - even worst - system files.
Please perform a full security check, and do a short report per each qTag.
This is a paid (bounty) issue!
by creating a node named "tags", the system complained that it existed already.
I realized that "tags" is a subfolder of .git (full path: ./.git/refs/tags), meaning that Quanta is also looking for nodes within this folder, that means performance loss and incongruencies.
Fix the Environment->nodePath function so that it skips .git when searching for real node paths.
We need to create a bash version of Doctor, similar to what drush is in Drupal.
Browser version might be supported for the future, while that's still under brainstorming, as there is no safe way to grant access, assuming that sometimes Doctor needs to run even in a broken environment where even login could be impossible.
Currently, there is no means to increase the size of the fontawsome.
With the latest version of fontawsome, you can increase the size of the icon by passing to the class its size like: fa-2x
, fa-3x
, fa-4x, etc
I think this will be handful.
The "catch-all" tpl (tpl^) should be works only if no other tpl is set.
the priority is:
Current bug: at the moment, if you set
/folder/tpl^
and
/folder/tpl-
nodes in /folder/sub-folder/ will take tpl^ instead of tpl-
Create a nice install profile for a "portfolio" kind of site.
At the moment, roles are assigned manually, by altering the JSON of the user node by hand.
We would rather have something visual, like a dedicated Shadow form, to allow administrators creating and assigning roles visually.
This approach should include rules for deciding "which role can assign which role"
We need to create a way to do inline replacement of single files (i.e. node thumbnail, user avatar...).
This should (probably?) be done using Shadow, with its single display output.
Shadow is very powerful but (still) poorly documented so far; keep in mind that you can select the tabs to appear in shadow by adding javascript parameters. See in example the standard node edit buttons:
The qtag qtag_EDIT
https://github.com/quantacms/quanta/blob/master/engine/modules/core/node/node.qtags.inc#L283
and the JS
https://github.com/quantacms/quanta/blob/master/engine/modules/core/node/js/node.js
When you do something like
[JS|external:/assets/js/script.js]
It returns the document root path like:
<script src="/var/www/html/quanta/sites/quanta.test//assets/js/script.js"></script>
Instead of
<script src="/assets/js/script.js"></script>
Possible line of code
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.