+ [GH]
+ Here you get a little background about me. Lern who I
+ am and what have I done in the past. Some of my interests
+ and so on. What exactly I do not know, I found it
+ always difficult to write something about myself.
+
+ [GH]
+ Currently this is more a changelog and a description
+ how to use new features.
+
+
+
+
API Doc and test coverage
+
+
+ There is the beginning of a api doc and automated
+ test coverage reports.
+ Both don't cover the complete code.
+
+ There is the beginning of a generated API doc
+ here.
+
+ I also started automated regression tests. The
+ results can be seen
+ here.
+
+
+
Version 0.1.5
+
+
+Another step on the way. Now basic signup is possible.
+Users and credential will be stored in gdbm files.
+If you do not want to signup you can use the pre created
+guest account to login.
+username: guest
+password: guest
+This user will not be available if you build your own
+version of taskrambler.
+
+
+
Usage
+
+
+The signup and login can be testes by clicking on
+signup or login in the menu. A popup should occur where
+you can enter the neccessary informations. Currently
+no sanity checks are done on the given data. The key
+is the email address.
+
+
+
+If you signup with an email address
+that is already in the database nothing happens, else
+a user will be created and logged in.
+
+
+
+After a successful login the first and surname will be
+visible in the upper right corner of the page.
+
+
+
+Additionally to the name you can find the version,
+session id as well as an indicator how long the session
+lasts. A session lasts 5 minutes since the last preocessed
+request.
+
+
+
Changes
+
+
+
+
add storage layer
+
add signup functionality
+
+
store users
+
store passwords as PBKDF2 sha512
+
+
make login work agains ldap and stored passwords
+
add favicon
+
show version, session info and login info on each page
+ [GH]
+ Here you will find links to snapshots, but please
+ keep in might that this is an unfinished project.
+ It also will contain some links.
+
+
+
+
Tarballs of my tags
+
+
+ Also this is not ready at all I create tags as
+well as tarballs from revisions I think of as stable.
+Currently the following tarballs are available:
+
+ Well, as taskrambler is not ready now I have to
+use another project management system to organize this
+project. The redmine project page for this project can be
+found
+here.
+
+
+
Github
+ There is also a github project of this.
+The state of this is always the same as on the above
+mentioned redmine. The github page can be found
+here.
+
+
diff --git a/assets/html/_main.html b/assets/html/_main.html
new file mode 100644
index 0000000..f45692c
--- /dev/null
+++ b/assets/html/_main.html
@@ -0,0 +1,185 @@
+
+
+
Taskrambler
+
+
+
+ [GH]
+ Welcome to taskrambler, the multi user task organization
+ and management tool. If you ever felt working together
+ is difficult and I really don't know whats going on at
+ the moment this tool might be helpful.
+
+
+
+
+
+
What is taskrambler
+
+
What is it right now.
+
+
+ Right now this is a HTTP server. It's written from
+scratch in C and serves as the user interface provider for
+taskrambler.
+
+
+
+ It delivers static assets placed within the project
+to webbrowsers. In fact the pages you read right now are
+delivered by taskrambler.
+
+
+
What it will be
+
+
+ The plan is to build a multi user task
+management system inspired by
+
+ taskwarrior.
+Users may log in and manage the tasks they have to do.
+Priorize them, assign them to projects, track the time
+spend on a given task and so on.
+Users also can configure who would be able to see what
+task and users with special roles, like managers will
+be able to see all tasks of their team, etc.
+It will be possible to create reports about what work was
+done etc.
+
+
+
+ Additionally this will serve as a ticket system.
+Tasks may be assigned to users and all the things
+possible with a ticket system will be possible here too.
+So this will combine a personal task management tool with a
+ticket system. Thus providing a getting things done tool
+that will improve the productivity of all persons working
+on a project.
+
+
+
What is it not
+
+
+ It is not another web server and it is not a
+web application as you might be used to. It will not run
+under any given web server. It brings it's own web server.
+
+
+
History
+
+
+ About two year ago I stepped across the
+
+ C10k
+problem. At that time, and in fact still right now, I don't
+feel experienced enough to face this problem. But anyway,
+it made me curious. Curious if I would be able to write an
+HTTP server by my own. So I started work on this.
+
+
+
+ Well, there are enough web servers available
+right now, even the C10k problem has brought up some really
+interesting exemplars. So I decided not to build another
+multi purpose HTTP server application but try another thing.
+I wanted to build an application with a user interface
+provided via browser. But what kind of application.
+
+
+
+ At the time I started this I was working for
+bigpoint, which is one of the worlds biggest browser
+game providers. So the first answer was obviously to build
+a game. But soon I realized that it needs much to build
+a game from scratch. You need a fascinating storyboard,
+well ballancing and game design and so on. So I dropped this
+idea again.
+
+
+
+ Approximately at the same time I started working
+with
+
+ taskwarrior which I found a really useful tool.
+I thought what about making something like this but for
+multiple users. It is pretty clear to you what you need for
+this and it would be cool to have something like this...
+and with some luck there are others who might be interested in
+such a thing too.
+
+
+
+ From the first day on the idea was to build
+this completely in C. This primary decision for this was
+that I really like the language and it had been a very long
+time since I last had the opportunity to do something in that
+language. Maybe another reason was that I had the hope to
+compete with some of the other C10k webservers. And well,
+taskrambler does not perform to bad at all. I did not
+choose C++ also I like some of the object oriented
+concepts because as most other OOP languages I think of
+it as bloated with stuff I never need. Please don"t flame
+on this, its only my opinion.
+
+
+
+ There are three things I really like in OOP,
+objects and their definition via classes, interfaces
+and inheritance. Why? Because if you ask me the whole topic
+is about reusability and maintanability.
+Obviously a well designed class is reusable. What makes
+it well defined? It implements an interface an reacts in
+a sane way on it. Well and inheritance is "sometimes" a good
+way to prevent duplicate code.
+
+
+
+ Some time ago I had read a book called
+
+Object oriented programming with ANSI-C from
+Axel-Tobias Schreiner. It has some really interesting
+concepts in it but goes a step to for for my taste with
+creating an own code preprocessor and other things. Anyway
+this was the base of a class like code framework which
+consists mostly of preprocessor code and some C code lines,
+as well as a code convention.
+This gives me the possibility to implement a well defined
+interface on various objects. I can extend and inject
+classes. All objects have a constructor and a destructor and
+if needed a clone constructor.
+Finishing this was the first building block of taskrambler.
+
+
+
+ The next goal was a working HTTP server
+implementation. I created a lot of classes, rewrote then
+dropped them again and thought about other solutions.
+At a given point I was really disappointed because on heave
+load the servers droped connection and I was unable to
+find out why. At that point I stopped working on this for
+over a year. But now I started again added some new cool
+code and think that the connection wasn"t been dropped by
+taskrambler but by the kernel. Shortly before I loose
+connection I found a kernel log entry that says that
+syn flood protection was been activated.
+
+
+
+ Right now this is an HTTP server that is able
+to handle cookies, speeks SSL and implements the subset
+of the HTTP protocol that I need. It performs not to bad
+but others should mesure this, I have no time for this.
+I know a lot of places where optimization is still possible.
+
- [GH]
- Here you get a little background about me. Lern who I
- am and what have I done in the past. Some of my interests
- and so on. What exactly I do not know, I found it
- always difficult to write something about myself.
-
-
-
-
-
-
Some words about me
-
-
The most important thing in my life. My family
-
-
Skill profile
-
-
Short vitae
-
-
-
-
-
-
-
-
diff --git a/assets/html/author.html b/assets/html/author.html
new file mode 120000
index 0000000..38d845a
--- /dev/null
+++ b/assets/html/author.html
@@ -0,0 +1 @@
+layout.html
\ No newline at end of file
diff --git a/assets/html/documentation.html b/assets/html/documentation.html
deleted file mode 100644
index 2f2b8ca..0000000
--- a/assets/html/documentation.html
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
- Taskrambler - Documentation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Documentation
-
-
-
- [GH]
- Currently this is more a changelog and a description
- how to use new features.
-
-
-
-
API Doc and test coverage
-
-
- There is the beginning of a api doc and automated
- test coverage reports.
- Both don't cover the complete code.
-
- There is the beginning of a generated API doc
- here.
-
- I also started automated regression tests. The
- results can be seen
- here.
-
-
-
Version 0.1.5
-
-
- Another step on the way. Now basic signup is possible.
- Users and credential will be stored in gdbm files.
- If you do not want to signup you can use the pre created
- guest account to login.
- username: guest
- password: guest
- This user will not be available if you build your own
- version of taskrambler.
-
-
-
Usage
-
-
- The signup and login can be testes by clicking on
- signup or login in the menu. A popup should occur where
- you can enter the neccessary informations. Currently
- no sanity checks are done on the given data. The key
- is the email address.
-
-
-
- If you signup with an email address
- that is already in the database nothing happens, else
- a user will be created and logged in.
-
-
-
- After a successful login the first and surname will be
- visible in the upper right corner of the page.
-
-
-
- Additionally to the name you can find the version,
- session id as well as an indicator how long the session
- lasts. A session lasts 5 minutes since the last preocessed
- request.
-
-
-
Changes
-
-
-
-
add storage layer
-
add signup functionality
-
-
store users
-
store passwords as PBKDF2 sha512
-
-
make login work agains ldap and stored passwords
-
add favicon
-
show version, session info and login info on each page
-
-
-
-
-
-
-
-
-
-
diff --git a/assets/html/documentation.html b/assets/html/documentation.html
new file mode 120000
index 0000000..38d845a
--- /dev/null
+++ b/assets/html/documentation.html
@@ -0,0 +1 @@
+layout.html
\ No newline at end of file
diff --git a/assets/html/download.html b/assets/html/download.html
deleted file mode 100644
index d237a01..0000000
--- a/assets/html/download.html
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
- Taskrambler - Download
-
-
-
-
-
-
-
-
-
-
-
- [GH]
- Here you will find links to snapshots, but please
- keep in might that this is an unfinished project.
- It also will contain some links.
-
-
-
-
Tarballs of my tags
-
-
- Also this is not ready at all I create tags as
- well as tarballs from revisions I think of as stable.
- Currently the following tarballs are available:
-
- Well, as taskrambler is not ready now I have to
- use another project management system to organize this
- project. The redmine project page for this project can be
- found
- here.
-
-
-
Github
- There is also a github project of this.
- The state of this is always the same as on the above
- mentioned redmine. The github page can be found
- here.
-
-
-
-
-
-
-
-
diff --git a/assets/html/download.html b/assets/html/download.html
new file mode 120000
index 0000000..38d845a
--- /dev/null
+++ b/assets/html/download.html
@@ -0,0 +1 @@
+layout.html
\ No newline at end of file
diff --git a/assets/html/layout.html b/assets/html/layout.html
new file mode 100644
index 0000000..74f293f
--- /dev/null
+++ b/assets/html/layout.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+ Taskrambler
+
+
+
+
+
+
+
+
+
+
+
- [GH]
- Welcome to taskrambler, the multi user task organization
- and management tool. If you ever felt working together
- is difficult and I really don't know whats going on at
- the moment this tool might be helpful.
-
-
-
-
-
-
What is taskrambler
-
-
What is it right now.
-
-
- Right now this is a HTTP server. It's written from
- scratch in C and serves as the user interface provider for
- taskrambler.
-
-
-
- It delivers static assets placed within the project
- to webbrowsers. In fact the pages you read right now are
- delivered by taskrambler.
-
-
-
What it will be
-
-
- The plan is to build a multi user task
- management system inspired by
-
- taskwarrior.
- Users may log in and manage the tasks they have to do.
- Priorize them, assign them to projects, track the time
- spend on a given task and so on.
- Users also can configure who would be able to see what
- task and users with special roles, like managers will
- be able to see all tasks of their team, etc.
- It will be possible to create reports about what work was
- done etc.
-
-
-
- Additionally this will serve as a ticket system.
- Tasks may be assigned to users and all the things
- possible with a ticket system will be possible here too.
- So this will combine a personal task management tool with a
- ticket system. Thus providing a getting things done tool
- that will improve the productivity of all persons working
- on a project.
-
-
-
What is it not
-
-
- It is not another web server and it is not a
- web application as you might be used to. It will not run
- under any given web server. It brings it's own web server.
-
-
-
History
-
-
- About two year ago I stepped across the
-
- C10k
- problem. At that time, and in fact still right now, I don't
- feel experienced enough to face this problem. But anyway,
- it made me curious. Curious if I would be able to write an
- HTTP server by my own. So I started work on this.
-
-
-
- Well, there are enough web servers available
- right now, even the C10k problem has brought up some really
- interesting exemplars. So I decided not to build another
- multi purpose HTTP server application but try another thing.
- I wanted to build an application with a user interface
- provided via browser. But what kind of application.
-
-
-
- At the time I started this I was working for
- bigpoint, which is one of the worlds biggest browser
- game providers. So the first answer was obviously to build
- a game. But soon I realized that it needs much to build
- a game from scratch. You need a fascinating storyboard,
- well ballancing and game design and so on. So I dropped this
- idea again.
-
-
-
- Approximately at the same time I started working
- with
-
- taskwarrior which I found a really useful tool.
- I thought what about making something like this but for
- multiple users. It is pretty clear to you what you need for
- this and it would be cool to have something like this...
- and with some luck there are others who might be interested in
- such a thing too.
-
-
-
- From the first day on the idea was to build
- this completely in C. This primary decision for this was
- that I really like the language and it had been a very long
- time since I last had the opportunity to do something in that
- language. Maybe another reason was that I had the hope to
- compete with some of the other C10k webservers. And well,
- taskrambler does not perform to bad at all. I did not
- choose C++ also I like some of the object oriented
- concepts because as most other OOP languages I think of
- it as bloated with stuff I never need. Please don"t flame
- on this, its only my opinion.
-
-
-
- There are three things I really like in OOP,
- objects and their definition via classes, interfaces
- and inheritance. Why? Because if you ask me the whole topic
- is about reusability and maintanability.
- Obviously a well designed class is reusable. What makes
- it well defined? It implements an interface an reacts in
- a sane way on it. Well and inheritance is "sometimes" a good
- way to prevent duplicate code.
-
-
-
- Some time ago I had read a book called
-
- Object oriented programming with ANSI-C from
- Axel-Tobias Schreiner. It has some really interesting
- concepts in it but goes a step to for for my taste with
- creating an own code preprocessor and other things. Anyway
- this was the base of a class like code framework which
- consists mostly of preprocessor code and some C code lines,
- as well as a code convention.
- This gives me the possibility to implement a well defined
- interface on various objects. I can extend and inject
- classes. All objects have a constructor and a destructor and
- if needed a clone constructor.
- Finishing this was the first building block of taskrambler.
-
-
-
- The next goal was a working HTTP server
- implementation. I created a lot of classes, rewrote then
- dropped them again and thought about other solutions.
- At a given point I was really disappointed because on heave
- load the servers droped connection and I was unable to
- find out why. At that point I stopped working on this for
- over a year. But now I started again added some new cool
- code and think that the connection wasn"t been dropped by
- taskrambler but by the kernel. Shortly before I loose
- connection I found a kernel log entry that says that
- syn flood protection was been activated.
-
-
-
- Right now this is an HTTP server that is able
- to handle cookies, speeks SSL and implements the subset
- of the HTTP protocol that I need. It performs not to bad
- but others should mesure this, I have no time for this.
- I know a lot of places where optimization is still possible.
-
-
-
-
-
-
-
-
-
diff --git a/assets/html/main.html b/assets/html/main.html
new file mode 120000
index 0000000..38d845a
--- /dev/null
+++ b/assets/html/main.html
@@ -0,0 +1 @@
+layout.html
\ No newline at end of file
diff --git a/assets/js/init.js b/assets/js/init.js
index ae446be..41bfe47 100644
--- a/assets/js/init.js
+++ b/assets/js/init.js
@@ -1,10 +1,29 @@
var sess = null;
$(document).ready(function() {
- var sval = new ServerVal("#randval");
+ var sval = new ServerVal("#randval");
+ var asset_exp = /^.*\/(.*)/;
+ var asset = '/_main.html';
+
+ var title_adds = {
+ '/_author.html' : ' - Author',
+ '/_documentation.html' : ' - Documentation',
+ '/_download.html' : ' - Download',
+ };
+
+ asset_exp.exec(this.location);
+
+ if ('' != RegExp.$1) {
+ asset = '/_' + RegExp.$1;
+ }
+
+ if (asset in title_adds) {
+ this.title += title_adds[asset];
+ }
$("#title").load("/_title.html");
$("#footer").load("/_footer.html");
+ $("#main").load(asset);
$("#menu").load("/_menu.html", function() {
$("div#menu ul li.signup").click(function() {