summaryrefslogtreecommitdiff
path: root/rt/docs/design_docs/local_hacking
diff options
context:
space:
mode:
Diffstat (limited to 'rt/docs/design_docs/local_hacking')
-rw-r--r--rt/docs/design_docs/local_hacking32
1 files changed, 32 insertions, 0 deletions
diff --git a/rt/docs/design_docs/local_hacking b/rt/docs/design_docs/local_hacking
new file mode 100644
index 000000000..c06d1126d
--- /dev/null
+++ b/rt/docs/design_docs/local_hacking
@@ -0,0 +1,32 @@
+To facilitate local hacking, RT needs a mechanism to allow site administrators
+to easily add HTML templates for the web ui and to replace sections
+of code in RT's core modules _without_ having to modify those modules
+
+We'll use several methods to achieve this goal.
+
+ Webui
+ HTML::Mason allows users to create multiple
+component hierarchies. RT should ship with a local component root
+defined and available. This root should be configured as the "primary"
+component root.
+
+
+ Core modules
+
+ This gets a bit trickier. we want to allow people to trivially
+subclass core modules and to use those subclasses throughout the code.
+
+The way we're going to handle this is by setting up a number of subroutines
+in config.pm that look something like this:
+
+sub NewTicketObj {
+ eval "require $TicketClass";
+ my $object = new $TicketClass;
+ return ($object);
+}
+
+# This variable is used for ref type checking
+$TicketClass = "RT::Ticket";
+
+we could use an eval around the require and thus completely avoid specifying
+the object in two places. which feels like a win. but i'm worried about perf.