Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Feature Roadmap etc Development Discussion
#1
There is not much going on development wise, but it is going on.
There is no formal roadmap, there is no prioritized feature list.

There are no developers either. sooo.

I will try to convey at least my thoughts, and I have discussed these with several people and realize that they are not written down, well they are all over the place in forums and I have a multitude of features created on most of them in github, but there is no concise location where normal people can keep up with them.

soo here
my braindump

https://github.com/GetSimpleCMS/GetSimpleCMS/issues/583


Edited:
Added Uploads and Media Assets section
NEW: SA Admin Toolbar Plugin | View All My Plugins
- Shawn A aka Tablatronix
Reply
#2
hi

nice writeup!

two comments from side:
- my first priority would be to clean up the code structure and get GS to at least support more modern PHP (as an example by getting rid of all globals and by explicit calls to each function).
- i'd like to see a "vision" for the future of GS (for what kind of site? for what type of administrator and user?)

the whole change should IMO happen through gradual changes and not through a big rewrite that takes too long to be delivered...
Reply
#3
Yes very soon I will start nailing down milestones for 3.3 and drafting a 4.0 release goals.

Ditching globals would be nice, and a step towards oop. But not sure how that could happen without breaking all kinds of stuff.
NEW: SA Admin Toolbar Plugin | View All My Plugins
- Shawn A aka Tablatronix
Reply
#4
I applaud your thinking!
Quote:Content Editing

Make code and wysiwyg editors global, can be added anywhere with simple classes.

Make editors pluggable, hooks to insert your own editors, lightweight html5 and markdown would be awesome in core.
I'm all in favor of that, in fact I've always thought that the one drawback of GS was the fact that I was locked into one editor. it would be best to have choices, ... my particular preference is markitup, and I'm sure other people have other choices.
Quote:The theme editor is lacking, it has already been replaced in 3.3 ...

Is that available for download? The reason I ask is I am in the process of creating a theme editor for a suite of HTML5 responsive page templates covering the full window range from 320 to full screen.
Reply
#5
NO but you can see it in the master branch on github, which is development. It is just hacked in, not abstracted into an actual editor library yet. It works, just install the master zip somewhere.

https://github.com/GetSimpleCMS/GetSimpl...9?source=c
NEW: SA Admin Toolbar Plugin | View All My Plugins
- Shawn A aka Tablatronix
Reply
#6
(2013-06-01, 02:23:12)shawn_a Wrote: soo here
my braindump
https://github.com/GetSimpleCMS/GetSimpleCMS/issues/583

It is a great roadmap!
I think it will be great to have all these new features!

Thanks!
jEsuSdA 8)
Reply
#7
Quite an extensive roadmap. If GS had all of these things....*drools*

Until then though, we shall try to accommodate for those goals through plugins :-P

Something of note regarding the Object Oriented PHP point shawn made (and others may already know): you can call class methods on plugin hooks (as singletons or instances).

Class:
PHP Code:
class YourPlugin {
  
/* define your methods */
  
public function contentHook() {
    
// example of a content hook within a class
  
}
  public function 
adminPanel() {
    
// example of an admin panel within a class
  
}


Singleton call:
PHP Code:
# register plugin
 
register_plugin(
  
'plugin id',
  
'plugin name',
  
'plugin version'
  
'author',
  
'website',
  
'description',
  
'page type',
  
'YourPlugin::adminPanel'
 
);

# content hook
 
add_filter('content''YourPlugin::contentHook'); 

Instantiation call:
PHP Code:
# instantiate plugin
 
$yourPlugin = new YourPlugin;
# register plugin
 
register_plugin(
  
'plugin id',
  
'plugin name',
  
'plugin version'
  
'author',
  
'website',
  
'description',
  
'page type',
  array(
$yourPlugin'adminPanel')
 );

# content hook
 
add_filter('content',   array($yourPlugin'contentHook')); 

(I prefer the latter method tbh, because the singleton way invokes a lot of faffing around with static property/method declarations that I'm not arsed enough to deal with).

So you can build the entire set of functions for the plugin within your plugin class without needing to create global functions to pass to the hooks (immediately giving you the benefits of OOP, e.g. you don't need to prefix your function names like 'yourplugin_contenthook').
Reply
#8
Good work angryboy

Singleton syntax will probably throw errros in php 5.2 I think call_user_func complains about :: syntax before 5.3

A thread dedicated to this would be nice.
NEW: SA Admin Toolbar Plugin | View All My Plugins
- Shawn A aka Tablatronix
Reply
#9
Sorry to join late.

Technical
MVC seems a pretty obvious and reasonable step to take. But what do you think about using a framework with some components that could potentially ease up the development?
How about a micro-framework like Swiftlet, that has the basics, and just the basics set up? It's got a neat hooking system thats quite similar with GS in terms of ease of use. Also it seems ridiculously easy to work with and to build upon it. I imagine that a lot of current code could be put into some modules or libraries working on top of Swiftlet.

Pages
I'm actually using this kind idea in my current project (with the help of this plugin). There are few page categories. Each category is a set of fields and has a pre-set position in the menu. Also, each category has an index/paginator parent page that displays all children (with or without pagination) with predefined or generic views. All done with current UI capabilities, so I don't think that the category adding/editing UI needs to be handled by third party plugins. Personally I don't think that's a good idea. IMHO it'd be better to have this one "official".

Themes
IMHO theme editor is not needed in a CMS interface. Responsibilities for webpage design and content management should be separate. I can't count how many times I got confused about what kind of data and structures need to be created with the CMS I was using and what has to be coded outside in one's editor of choice. Quite often in those situations the documentation is not helpful. Among many things that I really like in GS is a rather clear (comparing to other CMS's) separation between developer/theme designer and the end-user/content manager. It's simple, it works, and client doesn't call me to fix stuff that got messed because he/she edited some theme stuff that wasn't supposed to be messed with.

Components/Snippets
Never used them because reasons above.

Image Manipulation/Thumbnails
I'd like to have support for SVG images. In my projects I ninjahack in support for thumbnails and pic chooser.

Editing site settings, Content Editing, Bundled Plugins
I like that.

Currently the only feature that I miss the most in GS is a proper support for clean URLs. I haven't managed to get around to hack it in yet. Some thinking needs to be done how to implement it so it won't kill little kittens.
Reply
#10
Proper support for clean urls? Explain?
NEW: SA Admin Toolbar Plugin | View All My Plugins
- Shawn A aka Tablatronix
Reply
#11
Using what I know about nginx and some tips from here I never managed to get it working correctly under nginx. The closest I got was working %slug%. %parent% was either working only 1 level deeper or not working at all, no matter what rewriting/routing magic I tried to pull off on nginx's configuration.

Basically I ran into this problem. What I'd like to have is not 2 or 4 but unlimited levels in URL structure.
Reply
#12
(2013-09-09, 17:07:40)Everyone Wrote: What I'd like to have is not 2 or 4 but unlimited levels in URL structure.

FYI the I18N plugin supports that, by using the %parents% placeholder in your custom permalink structure.
Reply
#13
Yes, it says it does, and I tried to make it work but somehow not only it didn't work, but the %parents% tag wasn't getting recoginzed at all.
Reply
#14
(2013-09-10, 08:51:51)Everyone Wrote: Yes, it says it does, and I tried to make it work but somehow not only it didn't work, but the %parents% tag wasn't getting recoginzed at all.

This should go to the I18N plugin's support thread, but... did you change get_header by get_i18n_header in your template? AFAIR it's required.
Reply
#15
I've got thru the documentation again. get_header() ain't that important. It's the link creating i18n replacements (like get_i18n_navigation(), get_i18n_link(), etc.) that need to be put instead of core functions for URIs to be "properly" generated and for %parents% tag to get parsed.

Still, those URIs won't work without some kind of a magical serverside rewrite, becasue GS expects to get a single slug (+params):
Code:
# get page id (url slug) that is being passed via .htaccess mod_rewrite
if (isset($_GET['id'])){
    $id = str_replace ('..','',$_GET['id']);
    $id = str_replace ('/','',$id);
    $id = lowercase($id);
Like the comment explains, on Apache this can be achieved within .htaccess, but on nginx this may be a problem because of how nginx server configuration is organized. I'm running an nginx server myself and I still can't figure out that rewrite rule (my regex-fu is pretty basic).

Even then it's a sort of cheat, because it doesn't matter if you go with:
Code:
http://site.com/page-with-children/child-page/subchild-page/
or
Code:
http://site.com/subchild-page/
coz' both will work.
Reply
#16
Components/Snippets:
  • fold-in fold out support.
  • Components/snippets can be categorized and/or grouped with specific theme. So if you set a specific theme, certain components will get automatically enabled, others get disabled.
  • In the Choose your theme section you can disable/enable components/snippets set specific for that theme.
  • Possibility to add component/snippet to specific theme section via pull-down menu. So setting a component to the sidebar of a theme, means pull-down menu -> select sidebar, and
    Code:
    <?php get_component('component name'); ?>
    is added to
    Code:
    <div id="sidebar"></div>
    .
Reply




Users browsing this thread: 1 Guest(s)