Coder Social home page Coder Social logo

abydahana / aksara Goto Github PK

View Code? Open in Web Editor NEW
103.0 14.0 46.0 18.26 MB

Aksara is a CodeIgniter based CRUD Toolkit you can use to build complex applications become shorter, secure and more reliable just in a few lines of code. Serving both CMS or Framework, produce both HEADLESS (RESTful API) or TRADITIONAL (Browser Based) just by writing single controller. Yet it's reusable, scalable and ready to use!

Home Page: https://www.aksaracms.com

License: MIT License

PHP 79.46% CSS 1.41% JavaScript 8.51% Twig 5.13% HTML 0.03% INI 0.01% ApacheConf 0.07% JSON 4.47% Markdown 0.43% Text 0.08% SVG 0.40% robots.txt 0.01%
aksara cms aksaracms codeigniter headless api php

aksara's Introduction

aksara's People

Contributors

abydahana avatar bangil0 avatar ganjarnugraha avatar khoirulmustofa avatar seoeaa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aksara's Issues

Installation

I installed Aksara on my local server with PHP 8 and am blocked at the Database configuration stage: "Whoops! Creation of dynamic property App\Controllers\Install::$db is deprecated". What would you propose? Thank you.

Missing css and auth folders, and possibly more

After installing 5.0.3 by downloading the files, extracting them, running 'composer install', then accessing and completing the wizard successfully in the browser, I knew something was wrong because there was no css and the page looked wrong. I checked and found the folder /public/assets/css did not exist. Also, the 'Sign In' link gives a 404 Not Found error. I followed the installation wizard successfully and received no error messages at all while installing. Can I please get some help to try and get Aksara working on my local dev machine. My environment is Mac OS Venture/Apache as module/PHP 8.2/MySQL 8.1.0 - Homebrew. Thank you.

Apakah projek ini akan terus dimaintain?

Sebelumnya terima kasih atas aplikasi CMS nya mas. tampilan admin panelnya keren.

Saya ingin tanya apakah aplikasi ini akan terus dimaintain?

Saya ingin memakai aplikasi ini untuk keperluan saya, karna aplikasi ini sudah support REST Api secara default. Top markotop.

Hanya saya khawatirnya tiba2 ga dimaintain lagi, ganti framework atau yang lainnya nanti jadi pusing. 😅

Oya, apakah mungkin menghilangkan /public dari URL nya?

Makasih.

Module Download File

Mas, apakah di cms ini tersedia untuk modul upload/download file? apakah boleh dibagikan jika ada?

Known Issue & Solution of Folder Permission

Important Note for UNIX users

There are known issue related to UNIX operating system that limit user and group permission related to folder (directory) access and write. If you faced the problem related to this, here's few documentation to find out and solve the problem.

CENTOS (Apache)
# sudo chown -R apache:apache /path/to/aksaracms
Make sure your selinux allows to write content
# sudo chcon -R -t httpd_sys_rw_content_t /path/to/aksaracms

UBUNTU (Apache)
# sudo chown -R www-data:www-data /path/to/aksaracms
Make sure your selinux allows to write content
# sudo chcon -R -t httpd_sys_rw_content_t /path/to/aksaracms

MacOS
# sudo chmod -R ug+rwx /path/to/aksaracms

Missing Auto Routes (Windows)

We found that if Aksara installed under the Windows inside the CamelCase folder (or maybe UPPERCASE too) will causing the auto-routes not working correctly. You need to make the parent path of Aksara installation to be lowercase.
Problem persist (XAMPP)
C:\xampp\htdocs\Aksaracms\
Solution
Rename the folder to
C:\xampp\htdocs\aksaracms\

Other operating system and web server environment would be listed under this issue. If you have been troubleshoot related issue under the other operating system and web server environment, please merge your tips and trick to figure it here.

Thank you!

error on registration - undefined variable captcha

CRITICAL - 2022-07-15 01:53:26 --> Undefined variable: captcha
in APPPATH/Modules/Auth/Views/register.php on line 93.
1 APPPATH/Modules/Auth/Views/register.php(93): CodeIgniter\Debug\Exceptions->errorHandler()
2 SYSTEMPATH/View/View.php(213): include('APPPATH/Modules/Auth/Views/register.php')
3 SYSTEMPATH/View/View.php(216): CodeIgniter\View\View->CodeIgniter\View{closure}()
4 SYSTEMPATH/Common.php(1135): CodeIgniter\View\View->render()
5 APPPATH/Laboratory/Template.php(573): view()
6 APPPATH/Laboratory/Core.php(3191): Aksara\Laboratory\Template->build()
7 APPPATH/Modules/Auth/Controllers/Register.php(122): Aksara\Laboratory\Core->render()
8 APPPATH/Laboratory/Core.php(255): Aksara\Modules\Auth\Controllers\Register->index()
9 SYSTEMPATH/CodeIgniter.php(895): Aksara\Laboratory\Core->_remap()
10 SYSTEMPATH/CodeIgniter.php(466): CodeIgniter\CodeIgniter->runController()
11 SYSTEMPATH/CodeIgniter.php(349): CodeIgniter\CodeIgniter->handleRequest()
12 FCPATH/index.php(106): CodeIgniter\CodeIgniter->run()

error after automatic update

After the last automatic update, i've the following error (500 error on website www.belgaphil.org).
I executed also composer.....

ERROR - 2022-04-11 12:12:48 --> You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(255),
MODIFY hostname varchar(255),
MODIFY port int(5),
MODIFY usern...' at line 3 ERROR - 2022-04-11 12:12:48 --> You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(255), MODIFY portint(5), MODIFYusernamevarchar(512), MODIFYpassw...' at line 4
ERROR - 2022-04-11 12:12:48 --> Duplicate column name 'login_attempt'
ERROR - 2022-04-11 12:12:48 --> Unknown column 'country' in 'app__users'
ERROR - 2022-04-11 12:12:48 --> You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UNSIGNED,
MODIFY status tinyint DEFAULT 0' at line 4

Error after update

Hallo, ada beberapa issue untuk beberapa item, diantaranya:

  1. Pagination: belum berfungsi
  2. install: 0000-00-00-004700_notifications_settings.php, ada spasi di penamaan file
  3. setelah hapus item, konten hilang

Terimakasih

seach by column issues

We are working on searching the list of entries.
All column filter works as intended, as well as columns that we were successful in configuring.
However, most of our tables have status fields in them and they are causing ambiguity when we filter by status and they cause the error when they are joined by set_relation().
We tried using something like table_name.column_name AS alias_name, this will give error "Unknown column 'alias_name' in 'where clause'".
Since this did not work, we then used the set_alias() instead, but this is giving us Column 'status' in where clause is ambiguous.

image

image

upgrade boostrap v5

Mas, mohon info untuk:

  1. Pagination, total item new mungkin sedikit tersenggol, berdampak tidak menampilkan data sesuai dengan data yang ditampilkan
  2. Library dokumen, mungkin bisa menambahkan curlAllowUnsafeSslRequests, supaya non ssl, bisa mengexport file
  3. Session login, apakah bisa di set untuk waktu destroy atau jika browser di tutup
  4. Apakah memungkinkan jika merender table bersamaan dengan output lainnya/memanggil fungsi table pada render view bersamaan dengan output lainnya
  5. Apakah memungkinkan jika menambah/merubah fungsi pada multiple select, mungkin bisa digunakan sebagai update all, atau deactive all

Email notifier not working

Email notifier appears to be broken; I'm also wondering what these
fields SMTP email masking and SMTP Sender Masking are for; maybe you can
provide a sample data for it? Please see the image below. Thank you.

image (1)

SyntaxError: JSON.parse

Hi, Thanks for this project
While i installing the app in the last step Finalizing when I click on Run Installer button i got this message error

Whoops! SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

Tipe Data Enum

Bagaimana penggunaan tipe data enum pada aksara?
Saya lihat tidak ada di Core.php
Mohon bantuannya..

Terima kasih

Contoh Modul pada Addons Market

apakah contoh modul pada Addons Market seperti Modul Micro Forum tidak bisa di install pada aksara versi terbaru ?
The Module Package Is Not Compatible With Your Current Aksara Version"

Suggestion for improvement

Add the ability to use Tabs (Nav Pills) in a modal window.

I use xCrud, there is a very simple but at the same time functionality of simple field separation.

Real example:
https://xcrud.net/demos/index.php?page=tabs&theme=bootstrap4

You can also implement something like:

->set_fields('customer_name, customer_lastname, etc', phrase(‘My profile’));
->set_fields('num_orders, total, etc', phrase(‘My orders’));
->set_fields('customer_address, customer_credid, etc', phrase(‘Billing info’));

tabs

I think it's a very good idea.

Improve multi language support

To add 1 blog post in 6 languages, you need to make 6 different posts with the same link. I think this is a very wrong decision.

I will give an example of the optimal implementation of multi-language support based on a blog:

  1. add 2 tables blogs__translation and blogs__categories_translation

add rows to the blogs_translation table

trans_id
trans_title
trans_excerpt
trans_content
trans_lang
trans_post_id

add rows to blogs__categories_translation table

trans_id
trans_title
trans_descriptions
trans_lang
trans_cat_id
  1. In the main site settings, the administrator specifies the main language of the system, for example, English.

  2. Remove language dropdown when adding a post. Instead, get an array of available languages (/administrative/translations) excluding the main language of the site and display them on the screen.

Example

lang

  1. For more comfortable adding/editing, you can put translations in Tabs (from the first suggestion for improvement), it will be convenient if there are many languages :-)
  2. When saving a post, save the translation fields directly to the blogs_translation database.
    Example when saving a blog entry
| trans_id | trans_title | trans_excerpt | trans_content | trans_lang | trans_post_id |
|    1     |   En-tête   |     Entrée    |     Texte     |     FR     |     120       |
|    2     |   Judul     |    Ringkasan  |     Konten    |     ID     |     120       |
|    3     |   Titolo    |    Estratto   |   Contenuto   |     IT     |     120       |
|    4     |   En-tête   |     Entrée    |     Texte     |     FR     |     125       |

Example when saving blog category

| trans_id | trans_title | trans_descriptions |  trans_lang | trans_cat_id |
|    1     |   En-tête   |        Entrée      |     FR      |      5       |
|    2     |    Titolo   |      Descrizione   |     IT      |      5       |
|    3     |    Judul    |      Keterangan    |     ID      |      5       |
  1. When a user opens a site for the first time, give it the default system language. If the user changes the language, just before displaying the content, pass it through a function, for example, get_translate('blogs', 'title', $current_lang), if there is no required translation, then show the text in the original language.

This solution is very simple. You need to use this approach to multi-language support everywhere (pages, blogs, testimonials ....). Thanks to this, it will be more convenient to edit the record in one place and there is no need to add a bunch of records, which will eventually lead to confusion with a large number of records.

Do not upload unused scripts to the frontend

You can separate the loading of scripts that are used in the backend and frontend parts of the site. There are too many scripts and styles loaded in the front end that are not actually used by the average visitor.

console

They can be divided. There is one download for the backend, and another download for the frontend (for example, only bootstrap, jquery and other styles and scripts that are actually used for the frontend)

It's the same with translations. The translation of all strings from json files (including the backend) is loaded into the frontend. Maybe when translating text in /administrative/translations/translate, it is worth making marks where the translation will be used (for example, backend, frontend or backend/frontend). And when generating JS, give the desired translation for the frontend or backend.

Also, as I understand it, js and css are created dynamically every time the page is updated. It may be worthwhile to physically save the files to a folder so as not to load the server.

Thanks to such little things, you can very well increase the speed of Aksara.

Groups and privileges

Add the ability to choose to show dashboard and sidebar widgets. For example, I allow my editor to add blog entries in the group, but he actually does not have a menu that is initially there (CMS-> Blogs-> Posts). In this case, you must manually create a menu for the group.

It would be great if all the menus that come by default in Aksara, you could choose which group they can be shown (and not just the super administrator).

The same applies to widgets on the main dashboard. For example, so that you can separately give privileges to a group, which, for example, will have access to the visit statistics widget (or Most used browser, Application information etc)

In general, these are my suggestions for improvement. I would also like to use the standard Codeigniter style coding.

Thanks

merge_content BUG

There is a bug when displaying 2 fields or more with the example expression {{ first_name }} {{ last_name }}, it only shows the first expression {{ first_name }}.

image

image

PDF dengan query pencarian

Untuk hasil PDF dan Cetak jika dilakukan query pencarian masih menampilkan seluruh data.
Harusnya hasil PDF dan Cetak ngikuti display query pencarian.
Misal, melakukan pencarian Bandung, di display sudah sesuai menampilkan 2 row,
sedangkan di PDF dan Cetak masih menampilkan seluruh data yg ada 10000 row.

Mohon pencerahannya,
Terima kasih

Use aksara as headless backend

Is it possible to use Aksara as a headless CMS, which communicates via REST API for frontends to consume (e.g. web frontends made in React, Vue, etc. or mobile clients)?

Error Running

first time I run it, I get an error : The application environment is not set correctly.

i use php 7.4

Capability to bulk activate Account

I just noticed that your system has bulk delete feature on the list of users and I would like to have this convenience on activating user accounts by bulk as opposed to activating them individually. Is there a way to use this on set_action()? Thanks
image

Core Images

Mas, ini untuk images/files upload, ketika di remove item ada sedikit error mungkin karena versi boostrapnya ya?
Dan untuk relations dropdown ketika data sedikit lebih banyak fungsi searchnya tidak bisa ya mas?
Terimakasih mas 🙏🙏🙏

Multilingual menu

Hi about multilingual menus:
Your answer:
_Hello, thanks for using Aksara. You don’t need to create multiple menu for each language. The menu label will automatically generate the phrase itself. You can translate the phrase through the “Translations” instead.

But: I made a page in 3 different languages ( pages/about-us). The system takes always the English one, even if I change the language

Site down

Hi,

it seems that your site (aksaracms.com) is down ! can you check please; and where to get documentation ? it seems that this project is great.

Sincerly,
Domi.

Suggestions

Good work, but your code is little bit unreadable :)
You can use some tools for codeigniter coding standard, all you need is here: CodeIgniter DevKit.
Also will be good to have some tests.

Ketika login admin

Error Number: 42000/1055

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'aksara.app__activity_logs.ip_address' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

SELECT ip_address, browser, platform, timestamp, DATE(timestamp) AS date FROM app__activity_logs WHERE timestamp >= '2020-12-12 14:16:18' GROUP BY user_id, date

Filename: F:/Ampps/www/aksara/vendor/codeigniter/system/database/DB_driver.php

Line Number: 691

Fatal error

halo bg ketika saya sudah selesai download pakai composer dan buka di browser saya mendapatin error ini
Fatal error: Uncaught Error: Call to a member function run() on int in C:\laragon\www\aksaracms\public\index.php:72 Stack trace: #0 {main} thrown in C:\laragon\www\aksaracms\public\index.php on line 72

Vulnerability

Hello!

First of all, I would like to say thank you for your development. It turned out to be a great product.

I have been studying Aksara for a couple of days. Identified very big security problems. In particular, any site visitor can create/modify/delete data without authorization and without any groups or privileges.

For example, to add Testimonial, just open the link:

https://demo.aksaracms.com/testimonials/create

In an open form, fill in all the data and send to the server.

Or to update the data:

https://demo.aksaracms.com/testimonials/update?testimonial_id=1

where testimonial_id is the id of the post.

Or delete data:
https://demo.aksaracms.com/testimonials/delete?testimonial_id=3

where testimonial_id is the id of the post.
The same goes for adding a user:
https://demo.aksaracms.com/user/create

Link list:
https://demo.aksaracms.com/pages/create
https://demo.aksaracms.com/testimonials/create
https://demo.aksaracms.com/testimonials/testimonials/update
https://demo.aksaracms.com/testimonials/update?testimonial_id=4
https://demo.aksaracms.com/testimonials/delete?testimonial_id=55
https://demo.aksaracms.com/user/create

There may be more vulnerabilities. This is what was quickly found.
Works both on the demo site and on aksaracms.com

Added on the demo site, an entry in Testimonials and Pages :-) Sorry, I did it for the test.

I recommend fixing it as soon as possible.

p.s.In the next question, I will make a suggestion for improving Aksara.

ERROR - MySQL STRICT MODE on Aksara 4.2.4

OS: Ubuntu 18.04 LTS
PHP 7.4
MySQL 5.7

Error in MySQL 5.7 and above.

mysqli_sql_exception: Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'aksara.blogs__categories.category_slug' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by in /DOC_ROOT/aksara/vendor/codeigniter4/framework/system/Database/MySQLi/Connection.php:314

Please do not give a solution to disable sql_mode -- Write the correct SQL!

Fix the LIMIT for SQL Server 2011 or earlier

Since my PR on codeigniter4/CodeIgniter4 didn't responded yet, you need to touch the core class to make the limit working with SQL Server 2011 or earlier.

File need changes
vendor/codeigniter4/framework/system/Database/SQLSRV/Builder.php

Find the _limit() protected method and override with following code:

    /**
     * Local implementation of limit
     */
    protected function _limit(string $sql, bool $offsetIgnore = false): string
    {
        if (empty($this->QBOrderBy))
        {
            $this->QBOrderBy    = ' ORDER BY (SELECT NULL) ';
            $sql               .= $this->QBOrderBy;
        }

        if (version_compare($this->db->getVersion(), '11', '>='))
        {
            if ($offsetIgnore)
            {
                $sql .= ' OFFSET 0 ';
            }
            else
            {
                $sql .= is_int($this->QBOffset) ? ' OFFSET ' . $this->QBOffset : ' OFFSET 0 ';
            }

            return $sql .= ' ROWS FETCH NEXT ' . $this->QBLimit . ' ROWS ONLY ';
        }

        $limit = $this->QBOffset + $this->QBLimit;

        // An ORDER BY clause is required for ROW_NUMBER() to work
        if ($this->QBOffset && ! empty($this->QBOrderBy))
        {
            $orderBy = $this->compileOrderBy();

            // We have to strip the ORDER BY clause
            $sql = trim(substr($sql, 0, strrpos($sql, $orderBy)));

            // Get the fields to select from our subquery, so that we can avoid CI_rownum appearing in the actual results
            if (count($this->QBSelect) === 0 OR strpos(implode(',', $this->QBSelect), '*') !== FALSE)
            {
                $select         = '*'; // Inevitable
            }
            else
            {
                // Use only field names and their aliases, everything else is out of our scope.
                $select         = [];
                $fieldRegexp    = ($this->_quoted_identifier ? '("[^\"]+")' : '(\[[^\]]+\])');

                foreach ($this->QBSelect as $i => $singleQBSelect) {
                    $select[]   = (preg_match('/(?:\s|\.)' . $fieldRegexp . '$/i', $singleQBSelect, $m) ? $m[1] : $singleQBSelect);
                }

                $select         = implode(', ', $select);
            }

            return 'SELECT ' . $select . " FROM (\n\n" . preg_replace('/^(SELECT( DISTINCT)?)/i', '\\1 ROW_NUMBER() OVER(' . trim($orderBy) . ') AS ' . $this->db->escapeIdentifiers('CI_rownum') . ', ', $sql) . "\n\n) " . $this->db->escapeIdentifiers('CI_subquery') . "\nWHERE " . $this->db->escapeIdentifiers('CI_rownum').' BETWEEN ' . ($this->QBOffset + 1) . ' AND ' . $limit;
        }

        return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP ' . $limit . ' ', $sql);
    }

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.