This repository has been archived by the owner on Jan 29, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathalpha-todo.txt
143 lines (130 loc) · 8.23 KB
/
alpha-todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
\ = canned
* = done
+ = moved or likely moved to beta (or maybe canned altogether)
& = in progress
CANNED
\ add some way for modules and libraries to mark themselves as automatically imported to modules
\ menu lib doesnt xml::entities anything... it probably should | entity it yourself before sending if necessary.
\ possibly add a new menu item attribute that allows to insert arbitrary xml -- big maybe on this.
\ Benchmark prepare_cached versus how queries are cached now, because the current method is confusing and ugly
\ possibly add a warn() to all libraries if they are loaded outside of an oyster environment
\ possible create an import() for every lib to allow forcing it to load outside of an oyster env (if necessary)
\ revisions should probably just return their @revision arrays, like meta.pl/permissions.pl
\ only metadata style files should do this, but revisions contain code
\ remove email templates from the core db and just make them arguments passed to email_template; let modules store their own email templates
DELAYED
+ functions that return true/false should use '1' and '0' to be sql bool compatible
+ Remove http.pm's reliance on IO::Socket -- it pulls in too much shit; just use Socket;
+ Possibly divide /scripts/ directory up to split up different categories of scripts
+ change exceptions to be OO
+ many existing scripts could simply be moved to the console, possibly create scripts/console_cmds/ so that more commands can easily be added
+ ajax.pm
+ create a script to clean tmp directories
+ browser sniffing: instead of checking for firefox version or safari version check for gecko version or webkit version
+ cgi.pm should accept array/hash values (carefully...)
+ preprocessor, new config option to optimize for memory or cpu/db access
+ possibly allow oo-style access to the menu lib, this would require minimal changes (check for an odd number of arguments, if first is a ref, then its a parent, otherwise it's a menu)
+ docs
+ xslt browser gotchas
+ how to use strict in your module
- not really essential
+ ajax
- waiting for ajax.pm
+ testing framework
- necessary, but the testing framework is simple enough that this isn't really REQUIRED for alpha
+ various utils should use console::util to parse args instead of just using @ARGV
- Some probably should, but some that don't do it for a reason (file move/copy)
+ add an admin.pm api so that it can create all of the functions and hooks necessary for a module, easily
+ queries to global tables need to use oyster::DB explicitely, and provide alternate implementations if the queries are currently using a join that would not work if $DB and $oyster::DB were not the same
ORM
* objects created from the database need to NOT set the default value for fields, and need to properly store meta data to track whether the field was fetched or not
* lazy field fetching
COMPLETED
* Refactor config.pl to remove all of that ugly perl code that isn't just config data (create config.heavy.pl to do that stuff)
* Refactor oyster.pm and move url stuff to url.pm
* Clean up xml.pm and document more methods
* remove attr_entities, just have entities() entify quotes by default
* do something about proper english entities, probably remove it and make it an optional argument to entities()
* add entities_safe() that will not double-entify strings (for if you have a string that you aren't sure if it already contains entified stuff)
* Clean up server.pl
* Clean up console.pl
* Comment/document various other utilities
* Clean up user module
* make %USER and %PERMISSIONS imports
* make oyster::request()'s try catch blocks cached instead of re-creating them every request
* ensure navigation api is up to par
* possibly refactor admin navigation api (spec complete, needs implementation)
* give oyster.pm some exported functions: (changed -- these functions both exist but will not be made exports)
execute_script
perl_require (aka, require a file without oyster's lib paths)
* possibly revert to having libraries not 'use oyster' -- it can create circular dependency issues if you attempt to just use a library without first using oyster.
* move navigation stuff to oyster.pm -- should be part of the core
* remove general _admin permissions -- all they do is control whether you can access menus or not -- and just check the individual permissions
* this will be a performance hit but the current way is just too ugly
* rename user_admin_find permission (and possibly the associated function and url)
* remove the 'library' oyster import set
* menu lib should print nothing if the menu contains nothing, should return true/false for if anything was printed or not
* make exception throwing more consistent
* remove any remaining 'error' exceptions
* always use quotes for the error name
* update sims.js to oyster
* add function to module.pm, get latest revision
* move misc::trace to exceptions.pm
* consider dividing misc.pm up into many packages, like string::random(), etc
* load modules based on their dependencies (steal algorithm from update.pl)
+ skip modules that are not up to date (this requires a investigation, it can have a lot of side effects)
* die if a module needs to be updated
* email.pm has a few functions that need their argument lists updated
* Remove any remaining 'deprecated' stuff and fix anything that depends on it
+ there are still a few things in xml::parser, but that is more of an auxiliary module
* server last conf should go in tmp (/script/ shouldn't be assumed writable)
* Clean up testing framework
* move bbcode/xhtml tags to just be hard coded -- this saves memory and speeds load time
* figure out if @INC should include module directories
* menu lib currently ignores 'require_children' for anything but top level items -- leave this as a limitation?
* updated menu lib to obey 'require_children' for all items
* console search is broken, investigate this (seems to be ok now)
* convert /swaf/ to /oyster/ in all xml/xslt
* recompile server_base.xsl dynamically as needed
* style.pm needs register/unregister/enable/disable
* docs
* coding conventions
* sql compatability
* certain libs (paypal, xml::parser, image, etc) should probably be removed until beta or later alpha
* left them in, but added a <warning> that they are pre-alpha
* probably shouldnt REQUIRE revisions.pl files for every module
* move module::*permissions* stuff to user.pm
* console should print to STDOUT explicitely in case buffers are active
* bug with user::add_permission_once -- shouldn't that be 'unless $perm_exists' ?
* update xslcompiler to generate dynamic styles (at least the easy ones to figure out)
* exceptions->import should accept a flag to NOT log fatal errors (for scripts and whatnot)
* additionally, added oyster import set 'script' which automatically supresses exception logging
Finished but need testing
* new ipc library
* Finish the algorithm for update.pl (if swaf is installed, only update installed modules)
* make sure STDERR is being used when it should be
* some lib functions (particularly newer ones) are undocumented, some functions have outdated (misleading) documentation
* look over libraries (again) to ensure consistent naming conventions
* better logic for getting content-type
* maybe build user rendering engine/version number detection into oyster instead of putting it into ssxslt.pm
* bug with ssxslt, $disable_ssxslt is not set soon enough when lazily loading the libs
* Spec out the new admin module and begin writing it
* make sure admin center contextual menus are consistent
* user login/out is completely b0rked
TODO
- docs:
& xml/xslt conventions
& module creation walkthrough
- admin/menu api integration
- runloop diagram
- possibly add user list to user admin
- qdcontent (rename static_content?)
- ssxslt needs version checks for various rendering engines
- change $module_db_prefix to $db_prefix and $module_admin_base_url to $admin_base_url
- oyster::request::_*?
- consider separating ajax layout into another file and generating separate dynamic styles for it -- or at least simplifying ajax templates
- move ajax stuff for main layout to either a <swaf:ajax_stuff /> element or a js call
- replace some variables on /oyster/ with style-compile-time variables
- all libs should 'use' all libs they require, in case they are imported without importing oyster.pm
- circular deps = bad?
& remove bad uses of query()