What is orgmode
The orgmode drupal module is able to import single files, such as articles, and transform it in nodes. Orgmode is a popular format for take notes, TODOs, articles, or books. Orgmode is to GNU Emacs, than GNU Emacs is to the operating system, although there are a version for vim, too.
Current state of Orgmode for Drupal 7
The orgmode drupal module is able to import single org files (http://www.orgmode.org), such as articles, and transform it in nodes.
It doesn't need dependencies such as gnu/emacs or another drupal modules.
It manages urls, files and headlines.
You can see the current sandbox: https://drupal.org/sandbox/davidam/1975296
Installation
You can download it with git clone --branch 7.x-1.x http://git.drupal.org/sandbox/davidam/1975296.git orgmode
Orgmode can be installed like any other Drupal module -- place it in the modules directory for your site and enable it on the "admin/modules" page, or with drush.
Using
Currently, you can import org files into nodes from /orgmode with a single form. If you don't have an org file to test, you can download http://www.davidam.com/docu/drupal/drupal7.org.
Reviews of other projects
- https://www.drupal.org/node/2267557#comment-9229623
- https://www.drupal.org/node/2338629#comment-9253599
- https://www.drupal.org/node/2304319#comment-9260231
- https://www.drupal.org/node/2382773#comment-9413857
- https://www.drupal.org/node/2362225#comment-9411361
- https://www.drupal.org/node/2129127#comment-9387959
| Comment | File | Size | Author |
|---|---|---|---|
| #48 | correct_message.png | 1.57 KB | pushpinderchauhan |
| #48 | org_error_notification_issue.png | 1.55 KB | pushpinderchauhan |
| #36 | orgmode_notices.png | 5.27 KB | pushpinderchauhan |
| #36 | orgmode_fatal_error.png | 8.87 KB | pushpinderchauhan |
| #23 | pic2.png | 21.69 KB | nitesh sethia |
Comments
Comment #1
ankitchauhan commentedwelcome
It appears you are working in the "master" branch in git. You should really be working in a version specific branch. The most direct documentation on this is Moving from a master branch to a version branch. For additional resources please see the documentation about release naming conventions and creating a branch in git.
Review of the master branch:
while waiting for an in-depht review of your module you can start out fixing some coding style issues detected by automated tools:
http://ventral.org/pareview/httpgitdrupalorgsandboxdavidam1975296git
We do really need more hands in the application queue and highly recommend to get a review bonus so we will(/can) come back to your application sooner.
regards
Comment #2
davidam commentedI've fixed the main issues, but I must fix the code sniffer results.
Comment #3
davidam commentedI've fixed the coding style issues detected by pareviewsh.
Comment #4
davidam commentedCan you set my status to needs review?, please. I'am reviewing three projects:
* http://drupal.org/node/1462634
* http://drupal.org/node/1743162
* http://drupal.org/node/1359176
And paredit don't show new errors and warnings. I'm seeing that editing the sandbox, I can't change the status by myself.
Comment #5
davidam commentedOk, now I can change the status :)
Comment #6
samvel commentedHi davidam,
My manual code review:
orgmode.inc:
* Submit handler for orgmode_form_validate().for submit handlerHave a nice day!
Comment #6.0
samvel commentedminor change
Comment #6.1
davidam commentedthe current branch is 7.x-1.x-dev.
Comment #6.2
davidam commentedadding sections
Comment #7
davidam commentedThanks! and done!
Comment #8
davidam commentedComment #8.0
davidam commentedintroducing
tags.
Comment #9
sreynen commentedI don't see a link to the project page here. Please add a link to this issue to make this easier for people to review.
Comment #9.0
sreynen commentedAdd file to tests
Comment #10
davidam commentedDone.
Comment #11
davidam commentedComment #12
kscheirerIs this functionality already present in the Feeds module? Is .org a file format? Perhaps you could use one of the Feeds Parsers, or add yours if it is unique.
There are also security problems in this module. You're pretty much assuming that the admin is the only person using the upload form, but the access check on that url is _node_add_access, which returns TRUE if the user has access to create nodes of any content type.
Please re-open this issue if you feel differently.
----
Top Shelf Modules - Enterprise modules from the community for the community.
Comment #13
davidam commented-> Is this functionality already present in the Feeds module?
Not, it isn't.
-> Is .org a file format?
Yes, it's.
-> Perhaps you could use one of the Feeds Parsers, or add yours if it is unique.
It sounds an interesting idea, I'll study feeds to integrate this work in feeds. Perhaps this project could become feeds org. On other hand, it will give more depedencies and perhaps additional complexity.
Comment #14
davidam commented-> There are also security problems in this module. You're pretty much assuming that the admin is the only person using the upload form, but the access check on that url is _node_add_access, which returns TRUE if the user has access to create nodes of any content type.
IMHO the security is right, any person who can add a node, must can upload an org file as a node.
Comment #15
sreynen commentedkscheirer is correct about the security problem. Node create permissions are content-type specific, but you're not treating them that way. If I give anonymous users permission to create Article nodes, but not Basic Page nodes, your module is allowing them to create Basic Page nodes anyway. That's a clear security problem.
Comment #16
davidam commentedWhat's your proposal? Can you send a patch?
Comment #17
PA robot commentedProject 1: https://drupal.org/node/2058247
Project 2: https://drupal.org/node/1977240
As successful completion of the project application process results in the applicant being granted the 'Create Full Projects' permission, there is no need to take multiple applications through the process. Once the first application has been successfully approved, then the applicant can promote other projects without review. Because of this, posting multiple applications is not necessary, and results in additional workload for reviewers ... which in turn results in longer wait times for everyone in the queue. With this in mind, your secondary applications have been marked as 'closed(duplicate)', with only one application left open (chosen at random).
If you prefer that we proceed through this review process with a different application than the one which was left open, then feel free to close the 'open' application as a duplicate, and re-open one of the project applications which had been closed.
I'm a robot and this is an automated message from Project Applications Scraper.
Comment #18
jonhattanI've spoke to @davidam and he prefers this project application instead of the other one.
About the security issue:
The module should provide a permission like "can upload orgmode file", to be used as an access argument in the menu item.
Additionally, in the upload form, you must restrict available content types to the ones the user has access to. That is, check for "create $type content" permission on each of them.
OTOH, instead of the raw sql query on line 18 of orgmode.inc, you may want to use Drupal API: node_type_get_types().
---
On module structure and scope:
I think it would be of interest to isolate the parser from the rest of the code into a function / class. This way, the module could provide some useful interfaces to the parser:
* input filter: allow users to enter text in orgmode in a node body (or any textarea) and transform it into html on node view.
* feeds parser.
* perhaps some formatters...
Also, it could be easier in a future to change the parser by a external library, just in case.
Comment #18.0
jonhattanadd sandbox link
Comment #19
PA robot commentedClosing due to lack of activity. Feel free to reopen if you are still working on this application (see also the project application workflow).
I'm a robot and this is an automated message from Project Applications Scraper.
Comment #20
davidam commentedComment #21
davidam commentedHello Jonhatan,
I'm sorry by the delay, I think that I've implemented your idea, about the security issue, although is strange that I don't see the permission in the permissions admin ui.
About the parser, I think that you refer something as https://github.com/mashdot/orgile/blob/master/www/site/orgile/orgile.php, this parser is unmaintained,l but perhaps I can reuse some ideas.
The input filter is a good idea, but to the future.
Thanks!
Comment #22
davidam commentedComment #23
nitesh sethia commentedCouple of issues and warnings...
1. Change the git link on the issue page.
2. Remove the warnings from both
and
file.
Comment #24
davidam commentedFixed!
Thanks for the checking Nitesh, the problem with the permissions admin ui is fixed, too.
Comment #25
Janke Consulting commentedLook clean. Good work!
Comment #26
davidam commentedThanks!
I'm seeing https://www.drupal.org/node/1975296/edit and doesn't appear the promote the sandbox project to full project. What can I do?
Comment #27
gisleStatus RTBC does not automatucally give you the right to promote the project. Before that happens, one of the code review administrators will have to go through it one more for a final review. These are extremely busy people, so the queue of RTBC projects waiting to be "fixed" is long.
You just have to be patient.
Comment #28
davidam commentedThanks for the information!
Comment #29
heddnComment #30
heddnAutomated Review
Best practice issues identified by pareview.sh / drupalcs / coder. n/a
Manual Review
variable_get('file_public_path' conf_path() . '/files')The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.
If added, please don't remove the security tag, we keep that for statistics and to show examples of security problems.
Comment #31
davidam commentedI'm having a strange trouble with git push:
$ git clone davidam@git.drupal.org:sandbox/davidam/1975296.git
Cloning into '1975296'...
remote: Counting objects: 189, done.
remote: Compressing objects: 100% (189/189), done.
remote: Total 189 (delta 117), reused 0 (delta 0)
Receiving objects: 100% (189/189), 28.62 KiB | 0 bytes/s, done.
Resolving deltas: 100% (117/117), done.
Checking connectivity... done.
$ git add README.org
$ git commit -m "creation" README.org
$ git push
fatal: remote error: Permission denied when accessing '1975296' as user 'davidam'
I've checked the rsa key and it's ok.
What can I do?
I've send the same report to https://www.drupal.org/node/1054276#comment-9041447.
Thanks.
Comment #32
heddnTry the push a couple times. Sometimes it doesn't work the first time.
Comment #33
davidam commentedThanks, now it's running!
Comment #34
davidam commentedI've improved the README, now there are README.org (orgmode is a text format) and README.txt (README.org exported to ascii).
The logic is ready.
Done. I'm using file_build_uri($file->filename).
Done.
Done. I'm using file_build_uri($file->filename).
Done.
Done.
Comment #35
davidam commentedComment #36
pushpinderchauhan commented@davidam, thanks to you for contribution.
Manual Review
It should be fixed during validation if file is not well formatted, either it prevent from uploading or display some meaningful message to user.
admin/orgmodeinstead of usingadminister site configuration.$field_name = db_query('select field_name from field_config_instance where bundle=:type and field_name=:field_name', array(':type' => $type, ':field_name' => variable_get('orgmode_bodyfield')))->fetchField();, look into db_query() once.varibale_set()that can be easily achieved through system_settings_form().Also you have not set default value for variable_get() for any of your form element, as it should be.
Your code should be something like this:
The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.
Please don't remove the security tag, we keep that for statistics and to show examples of security problems.
As I am not a git administrator, so I would recommend you, please help to review other project applications to get a review bonus. This will put you on the high priority list, then git administrators will take a look at your project right away :-)
Thanks Again!
Comment #37
davidam commented@er.pushpinderrana thanks for the suggestions, many things makes sense to me.
The project had passed to "Reviewed & tested by the community" and must be checked by a git administrator with the last suggestions (surely by @heddn).
Thanks.
Comment #38
klausiPlease don't RTBC your own issues, see the workflow: https://www.drupal.org/node/532400
Comment #39
davidam commented@klausi: it's true.
@er.pushpinderrana: I've started with the tasks:
Done, I've improved the message to user.
Done.
It's the same than the first question, you must introduce a title, now
the user message is better.
I don't understand this question.
It was obsolete. Deleted.
On this way, the setting is not stored in the variable.
I've upload an orgmode.install, but I don't know how can I check it.
Comment #40
davidam commented@er.pushpinderrana: I've advanced a little bit more
time() is running good and is a php standard function, why is better to use REQUEST_TIME?
I've improved it, take a look.
Added.
Comment #41
gisleREQUEST_TIMEis a static variable in that it represents the time the page request was made, not the current time. If there are several requests for the page request time (which may originate from different projects), callingtime()from each of these projects may create race conditions with unpredictable results that are hard to debug (I know this the hard way).Hence, there is a general agreement in the Drupal developer community that using
REQUEST_TIMEis the "right" way to do this.In addition
REQUEST_TIMEis a simple lookup of a static variable, so it is fast.time()actually runs a syscall in order to check the time when this line is called, so it is slower, but that is a secondary consideration.Comment #42
davidam commented@gisle: thanks for the explanation, in the documentation of REQUEST_TIME is not very explained https://api.drupal.org/api/drupal/includes%21bootstrap.inc/constant/REQU...
Fixed this point, too.
Comment #43
heddn(*) There is curly braces are mising in following query for table name.
$field_name = db_query('select field_name from field_config_instance where bundle=:type and field_name=:field_name', array(':type' => $type, ':field_name' => variable_get('orgmode_bodyfield')))->fetchField();, look into db_query() once.
These curly braces let the PDO statement work with table prefixing, typically for multi-site installs. See https://api.drupal.org/api/drupal/includes!database!database.inc/group/d...
Comment #44
davidam commentedFixed
Comment #45
grimreaperHello,
Thanks for your module.
Pareview.sh, there are points to fix : http://pareview.sh/pareview/httpgitdrupalorgsandboxdavidam1975296git
Test in a Drupal environment with your test file : Thanks for test file, really useful when you don't know the orgmode syntax. In the h2 : I have "\" added, example : db\_insert, is it normal ?
Manual review :
orgmode.install :
orgmode.inc :
Suggestions, very subjective :
Thanks for your module.
Comment #46
grimreaperHello,
I got a feature idea for your module. As I don't know orgmode, do you think it would be possible to add links on nodes (like the "add a comment" link on teasers) to get an orgmode version of the node ?
So your module would be able to import and export content from/to orgmode files.
That's just an idea I got, I don't know if it is possible and it is independant of the review application process. I wonder if I should not open an issue on the module instead of posting it here.
Comment #47
davidam commentedFixed.
I'm testing with installingdrupal.org and I'm not having this problem...
Fixed.
Yes, it's better give the possibility to grant permissions.
With admin/config/orgmode doesn't appear in admin/config, I've decided use admin/config/content/orgmode, because the suggestion is good.
Thanks for the revision!
Comment #48
pushpinderchauhan commentedAs I earlier mentioned regarding following point, you replied "On this way, the setting is not stored in the variable".
I have tested this code and it is storing values as required, you just replace your setting form with this code it would work for you. It would help to reduce extra submit function from your module.
Some more minor suggestions:
$field_name = db_query('select field_name from {field_config_instance} where bundle=:type and field_name=:field_name', array(':type' => $type, ':field_name' => variable_get('orgmode_bodyfield')))->fetchField();It should be:
Thankyou for your patience and hard work. I hope after these fixes, it would be ready for RTBC.
Comment #49
davidam commentedI'm having some troubles with system_settings_form the variables is not being stored using it. Can you send me a patch?
Done.
Comment #50
davidam commentedDone.
Comment #51
pushpinderchauhan commentedAutomated Review
Best practice issues identified by pareview.sh / drupalcs / coder. Yes, few minor issues, reported by http://pareview.sh/pareview/httpgitdrupalorgsandboxdavidam1975296git.
Manual Review
Just few minor suggestions.
The configuration options have been saved.message on successful submission..infofile, there is no need to use inverted comas, read https://www.drupal.org/node/542202 again.I tested module functionality node get created successfully if .org file is valid.
My blocking issues from #36 and #48 have been addressed. Good Job!
I personally feel this is good to go now. I am not seeing any additional blocking issues, so I am setting RTBC. As I am not a git admin, so it needs a second set of eyes from a review admin.
Thank you for your patience and hard work davidam!
PS: Getting Review bonus would help to speedup your module promotion.
Comment #52
davidam commentedI've advanced a little bit.
Done.
Yes, done.
IMHO it's fine. The only default value is for body field.
Comment #53
davidam commentedDone.
Done.
Comment #54
davidam commentedAnother project for my bonus review: https://www.drupal.org/node/2267557#comment-9229623
Comment #55
pushpinderchauhan commentedDon't forget to add the "PAReview: review bonus" tag, once you are done with at least 3 manual reviews as indicated in #1410826: [META] Review bonus, otherwise you won't show up on high priority list.
Comment #56
davidam commentedThanks for the tip. I've edited this issue.
I'm impatient to see to orgmode as full project in drupal. :)
Comment #57
pushpinderchauhan commentedHaving an admin review it to get the project promoted can take some time. I saw that you have one manual reviews done, other three are automated review report (removed). Two more manual review and you can add the PAReview: review bonus tag :).
Comment #58
davidam commentedComment #59
gislePlease note that the requirements for passing review laid down by this checklist: https://www.drupal.org/node/1587704. Please review item 4.1.
According to #30, your project was fine regarding licensing two months ago. However, after that you added
LICENSE.txtto the repo.Comment #60
klausiSince the license file just specifies GPLv2+ this is not an application blocker. Please remove it nevertheless.
Comment #61
davidam commentedDone.
Thanks Klausi.
Comment #62
davidam commentedComment #63
davidam commentedComment #64
klausimanual review:
Removing review bonus tag, you can add it again if you have done another 3 reviews of other projects.
Comment #65
davidam commentedKlausi, sorry by the delay:
The form API will make sure that only people can submit this form that have access to the form, so you can remove the user_access() check.
Done.
Do not hard code "sites/default/files" here since that might be in other places on Drupal installations. Use file('public://' . $file->filename); instead.
Done.
The check_plain()s are wrong here, since you are not printing the variables to HTML to the user. "When handling data, the golden rule is to store exactly what the user typed. When a user edits a post they created earlier, the form should contain the same things as it did when they first submitted it. This means that conversions are performed when content is output, not when saved to the database" from https://www.drupal.org/node/28984
Done
doc block is wrong, this is not a hook. See https://www.drupal.org/coding-standards/docs#forms
Done.
do not use "und", use LANGUAGE_NONE
Done.
do not use check_markup() here, since you are not printing anything to the user. Same as mentioned before: content should go unaltered to the database.
I'm printing the body and the summary. It checks variables for a drupal node..
You should not throw form validation errors here, that should be done in the form validation callback orgmode_form_upload_validate().
Are you sure? The validation errors here is from parser, not errors from form.
so $field_name is never actually used and everything is hardcoded to the body field?
field_name is a field to storage the org html body chosen by your admin settings, not from orgmode_upload.
filtered_html and full_html might not exist on every drupal site and should not be hardcoded here. I think you should provide the text format as parameter in the upload form, where you only provide the options a user has access to with filter_access().
it sounds a good idea, for admin settings, too. Ok?
why do you need the #theme keys here if you just use the default theme function? Can't you just omit them and the form would be the same?
I need think about it.
Comment #66
davidam commentedorgmode_form_settings(): why do you need the #theme keys here if you just use the default theme function? Can't you just omit them and the form would be the same?
Done.
Comment #67
davidam commentedComment #68
davidam commentedComment #69
pushpinderchauhan commentedAssigning to myself for next review, which will hopefully be tonight.
Comment #70
davidam commentedThanks!
Comment #71
pushpinderchauhan commentedAutomated Review
(+) Best practice issues identified by pareview.sh / drupalcs / coder. Yes
Review of the 7.x-1.x branch (commit 7604a0d):
Manual Review
Some of the issues mentioned in #64 still pending that need to be address.
No, you are not printing anything in orgmode_create_node() function, you are just programmatically creating node over there. When handling data, the golden rule is to store exactly what the user typed. When a user edits a post they created earlier, the form should contain the same things as it did when they first submitted it. This means that conversions are performed when content is output, not when saved to the database.
See https://www.drupal.org/node/28984
Yes, you can validate this in form validation callback function too by adding one more option of content type field in
admin/config/content/orgmodeform. It would also help to ensure whether given field exist in selected content type or not. One more thing, following code will fire only if the field name doesn't exist in selected content type. In that case $field_name always be blank so message appearing on screen is given below that doesn't make any sense because sentence is not completed.This content type (article) hasn't a tested_body field and field_name is .Issue still exists.
'#process' => array('form_process_checkbox', 'ajax_process_form'),appearing, even you are not processing any action here. It should be remove as per current scenario. See https://api.drupal.org/api/drupal/developer%21topics%21forms_api_referen... again.The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.
Please don't remove the security tag, we keep that for statistics and to show examples of security problems.
Comment #72
davidam commented** TODO 1
No, you are not printing anything in orgmode_create_node() function, you are just programmatically creating node over there. When handling data, the golden rule is to store exactly what the user typed. When a user edits a post they created earlier, the form should contain the same things as it did when they first submitted it. This means that conversions are performed when content is output, not when saved to the database.
See https://www.drupal.org/node/28984
--
I've fixed your suggestion. But IMHO, the format filter is to avoid store anything from the user, if you know that the user is going to introduce a malicious js, for instance, you must avoid it.
** TODO 2
Yes, you can validate this in form validation callback function too by
adding one more option of content type field in
admin/config/content/orgmode form. It would also help to ensure
whether given field exist in selected content type or not. One more
thing, following code will fire only if the field name doesn't exist
in selected content type. In that case $field_name always be blank so
message appearing on screen is given below that doesn't make any sense
because sentence is not completed.
--
The problem is that I capture the title (for instance) with regexp
from the file submitted, if I try process the title in
orgmode_form_upload_validate, I can't validate it, the
$form_state['storage']['file'] is NULL.
** TODO 3
orgmode_create_node(): so full_html means a user with the permission
'view upload orgmode page' can upload arbitrary HTML and do XSS
attacks. So either that permission needs to be marked as 'restrict
access' => TRUE or you need to follow my proposed approach to restrict
the filter formats the user has access to. Currently this is an access
bypass vulnerability since a user can create full_html nodes even if
they don't have access to that format (and a security blocker).
--
I've replaced full_html by filtered_html.
** TODO 4
(+) orgmode_form_settings() : What is the use of orgmode_css form
element here. Comment Needed. Make sure all variables defined by your
module need to be removed in hook_uninstall(). Currently orgmode_css
is not removed in hook_uninstall()
--
Perhaps, it doesn't make sense for many people, in drupal the common
way is modify the theme, but it can help to people without access to
the ftp with custom styles.
** TODO 5
(+) orgmode_form_settings(): in every form element '#process' =>
array('form_process_checkbox', 'ajax_process_form'), appearing, even
you are not processing any action here. It should be remove as per
current scenario.
--
Fixed
Comment #73
davidam commentedComment #74
klausiReview of the 7.x-1.x branch (commit b529250):
This automated report was generated with PAReview.sh, your friendly project application review script. You can also use the online version to check your project. You have to get a review bonus to get a review from me.
manual review:
But that are not application blockers, otherwise I think this is RTBC.
Assigning to stBorchert as he might have time to take a final look at this.
Comment #75
davidam commentedComment #76
davidam commentedComment #77
stborchertMy additions to the review of klausi:
* Path to upload form: in my opinion this would be better something like admin/content/orgmode (or similar) instead of simply orgmode
* Configuration form: while first looking at the form I didn't have any clue what the options are for. Some descriptions and help would be great here. I still have no idea what the CSS path is used for ;)
* Import form: wouldn't it be much better to include the options from the configuration form in this form? Say I have different content types where I would like to import org-files into. Every content type has a different structure and a different field for its content (we prefix non-shared fields with the content type name so this could be something like field_article_content or field_landingpage_heading). Using one global field name for the import destination would force the site builder to use the same field in all content types he wishes to import org-files into.
* Import form: using the human readable names in the content type selection would be much better. Oh, while writing about it: you could provide another dropdown for the destination field which automatically updates on content type selection. This would be a really nice feature ;)
* File storage: as klausi said before it's not always good to store the files in the public file system. Maybe you could add a configuration option for this.
But as these are no applications blockers I updated your account so you can promote this to a full project and also create new projects as either a sandbox or a "full" project.
Here are some recommended readings to help with excellent maintainership:
You can find lots more contributors chatting on IRC in #drupal-contribute. So, come hang out and stay involved!
Thanks, also, for your patience with the review process. Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.
Thanks to the dedicated reviewer(s) as well.
Comment #78
davidam commentedComment #79
davidam commented@klausi!
A lot of thanks for all work. I can see https://www.drupal.org/project/orgmode
what is orgmode? Is that a file format? What is the use case, why would you use this module? See https://www.drupal.org/node/997024
Done
Ah, is that the special file format you are referring?
Yes
why do you need the DB query anyway? You should use field_info_field() instead.
Yes, fixed.
The orgmode_css variable is currently unused? Please add a comment.
The themer must include it, but the drupal user can upload his style. Comments are welcome.
@stBorchert: thanks for all, I need more time to answer.
Comment #80
davidam commented@stBorchert:
Now, I've a little of time
Path to upload form: in my opinion this would be better something like admin/content/orgmode (or similar) instead of simply orgmode
It seems similar to /node/edit, so probably is ok in /orgmode, a content manager could upload new org files.
Configuration form: while first looking at the form I didn't have any clue what the options are for. Some descriptions and help would be great here. I still have no idea what the CSS path is used for ;)
An site admin could upload a css file, for all org files, if the themer wants include it.
File storage: as klausi said before it's not always good to store the files in the public file system. Maybe you could add a configuration option for this.
I've fixed this idea detecting the the general setting.
Import form issues in my personal queue. You can create an issue if you are specially intested.