Shervin,
I haven't had time to actually download your patch and play around with
it yet, but just so that you know there are going to be a couple of
problems in terms of getting this committed back to Roller.
1. The Roller project has made significant changes since version 2.1
which you based your patch off of, so there is basically no chance that
we can apply your patch to the current code base as is.
2. We typically only accept patches for smaller, more focused, changes
like bug fixes unless they have gone through some form of proposal and
review. Major features like this are important enough that the
developers like to see how things are being done before signing off, and
you didn't do this.
I don't want to sound discouraging because this is definitely a feature
that interests us and seems like a nice thing to be included in Roller,
but you've got to help us a little bit by going through some of our
process. Even though you've already done all (or most) of the work it
would help to see a design proposal on the wiki so that we can
understand how you did this work and others on the list can discuss it.
-- Allen
Shervin Asgari wrote:
Hello developers.
We have developed a new version of the multidomain with some new
changes. We have added a new role called domainadministrator. The
domainadministrator can now administer his own domain. We have also
added some editor functionality.
The new patch can be downloaded here. If you just want to quickly check
out what we have made, then I have the whole roller 2.1 + multidomain
sourcecode present. Just use your exisiting web server and run build
after changing ant.properties and the other necessary changes, and it
should be ready for reviewing.
http://users.linpro.no/~kjellm/roller-src-multidomain.tar.bz2
http://users.linpro.no/~kjellm/roller-patches.tar.bz2
This will be the last version we commit this summer. Hope for some
feedback during summer.
Below is the CAVEATS from the previous text in an updated form.
CAVEATS
This solution is now considered to be in a production ready state. But
there
are still things that could be improved.
(THIS SOLUTION IS NOW FINISHED)
The most urgent need for improvement is to add a new administration
level for
domain administrators. This could be done by adding a new userrole called
"domainadmin". A domain administrator would then be associated with his
domain
through domainuser, and with the role through userrole. A user with these
associations whould then be able to administer what blogs are available
in his
domain. This job is now left to a central administrator.
(THIS PART STILL REMAINS)
The procedure to create a new domain with a set of blogs is now to
create the
users as the administrator user, create blogs for these users, create
the new
domain and associate the blogs with the domain. This is quite time
consuming,
as the administrator needs to go through many different web forms. And
login
as the created users to create the blogs for them. This procedure needs
to be
simplified so the administrator can just create the domain and a domain
administrator. The domain administrator must then be able to create new
blogs
with a new user as owner in one simplified form, where all the
administrator
needs to enter is User full name, email-address (used as username),
password,
Name of blog and handle. The rest will get default values which can be
changed
by the users at a later time.
(THIS SOLUTION IS NOW FINISHED)
There is also a need for a domain editor. The news papers have legal
responsibility for the content they publish. The editor for the news paper
must therefore be able to remove or edit entries in any blog under his
domain in case a blog contains material that could result in legal issues.
THE PATCHES USED IN THIS SOLUTION
Patches that enable URLs to be rewritten:
(Add context to be used later for URL rewrite)
./src/org/roller/presentation/search/SearchServlet.java.patch
(Rewrite URLs)
./src/org/roller/presentation/weblog/tags/WeblogCalendarModel.java.patch
./src/org/roller/presentation/weblog/tags/BigWeblogCalendarModel.java.patch
./src/org/roller/presentation/website/actions/UploadFileFormAction.java.patch
./web/theme/bannerStatus.jsp.patch
./web/WEB-INF/classes/navbar.vm.patch
./web/WEB-INF/classes/searchresults_day.vm.patch
./web/WEB-INF/classes/searchresults.vm.patch
./web/WEB-INF/classes/website.vm.patch
./web/WEB-INF/classes/flavors/rss.vm.patch
./web/WEB-INF/classes/comments.vm.patch
./web/WEB-INF/classes/rssmacros.vm.patch
./web/WEB-INF/classes/weblog.vm.patch
./web/weblog/WeblogEdit.jsp.patch
./web/weblog/WeblogQuery.jsp.patch
./web/weblog/CommentManagement.jsp.patch
./web/website/UploadFile.jsp.patch
./web/website/YourWebsites.jsp.patch
(Rewrite URLs and make description translatable:)
./contrib/plugins/src/org/roller/presentation/velocity/plugins/readmore/ReadMorePlugin.java.patch
----------------------------------------------------------------------
Patches that add new tables and a domain manager (DB stuff):
(Add the new database tables:)
./metadata/database/droptables.sql.patch
./metadata/database/createdb.vm.patch
./metadata/database/hibernate/hibernate.cfg.xml.patch
./src/org/roller/pojos/DomainWebsiteData.java
./src/org/roller/pojos/DomainData.java
./src/org/roller/pojos/DomainUserData.java
./src/org/roller/pojos/DomainAdministratorData.java
(Add DomainManager:)
./src/org/roller/model/Roller.java.patch
./src/org/roller/model/DomainManager.java
./src/org/roller/business/DomainManagerImpl.java
./src/org/roller/business/RollerImpl.java.patch
./src/org/roller/business/hibernate/HibernateRollerImpl.java.patch
./src/org/roller/business/hibernate/HibernateDomainManagerImpl.java
----------------------------------------------------------------------
Patches that enable the use of the domain model (ie. filter incoming
requests
under /domain/ and rewrite URLs on the way out:
(A servlet filter to filter incoming domain requests, with helper classes:)
./src/org/roller/presentation/filters/DomainFilter.java
./src/org/roller/presentation/filters/DomainFilterRequestWrapper.java
./src/org/roller/presentation/filters/DomainFilterResponseWrapper.java
./src/org/roller/util/DomainUtil.java
(Rewrite outgoing URLs:)
./contrib/lib/urlrewrite-2.6.0.jar
./web/WEB-INF/urlrewrite.xml
./metadata/xdoclet/filters.xml.patch
./metadata/xdoclet/filter-mappings.xml.patch
----------------------------------------------------------------------
Patches that add a configuration interface that lets the administrator
administer the domain model:
./src/org/roller/presentation/website/actions/DomainWebsiteAdminAction.java
./src/org/roller/presentation/website/actions/DomainAdminAction.java
./web/website/domainAdminDeleteOK.jsp
./web/website/domainwebsiteAdminEdit.jsp
./web/website/domainAdmin.jsp
./web/website/domainAdminEdit.jsp
./web/website/addDomainAdministrator.jsp
./web/website/addDomainUser.jsp
./web/website/domainEditor.jsp
./web/website/userAdmin.jsp.patch
./web/website/yourWebsitesSidebar.jsp.patch
(Add some constants:)
./src/org/roller/presentation/RollerRequest.java.patch
(Add menu items and bind JSPs to actions:)
./web/WEB-INF/tiles-defs.xml.patch
./web/WEB-INF/admin-menu.xml.patch
./web/WEB-INF/security.xml.patch
./metadata/xdoclet/global-forwards.xml.patch
(New properties used by domain administration interface:)
./web/WEB-INF/classes/ApplicationResources.properties.patch
----------------------------------------------------------------------
General patches used to fix problems we encountered:
(Add norsk and nynorsk as available languages:)
./src/org/roller/presentation/velocity/LanguageServlet.java.patch
./web/WEB-INF/classes/ApplicationResources_nn.properties
./web/WEB-INF/classes/ApplicationResources_no.properties
(Use language from current blog as default:)
./src/org/roller/presentation/LanguageUtil.java.patch
(Use Asynchronous GET when gettin list of users, fixes Firefox bug:)
./web/theme/scripts/ajax-user.js.patch
(Allow 255 character usernames to handle long email addresses:)
./web/website/UserAdmin.jsp.patch