Improve context processors customization. And docs.

portnov [2009-07-12 18:34:15]
Improve context processors customization. And docs.
Filename
Blog/Context.hs
Framework/ContextProcessors.hs
Framework/TEngine/TemplateUtil.hs
README.ru
diff --git a/Blog/Context.hs b/Blog/Context.hs
new file mode 100644
index 0000000..439cd06
--- /dev/null
+++ b/Blog/Context.hs
@@ -0,0 +1,7 @@
+module Context where
+
+import Framework.Controller
+
+-- | Application set of context processors
+contextProcessors :: [ContextProcessor]
+contextProcessors = []
diff --git a/Framework/ContextProcessors.hs b/Framework/ContextProcessors.hs
index e5cdcff..b6bfc69 100644
--- a/Framework/ContextProcessors.hs
+++ b/Framework/ContextProcessors.hs
@@ -1,15 +1,20 @@
 module Framework.ContextProcessors
-    (defaultProcessors)
+    (contextProcessors)
     where

 import Framework.Types(TContainer(C))
 import Framework.Controller
 import Framework.API.Sessions

+import qualified Context (contextProcessors)
+
 -- | Default set of context processors
 defaultProcessors ::  [ContextProcessor]
 defaultProcessors = [addMessage]

+contextProcessors :: [ContextProcessor]
+contextProcessors = defaultProcessors ++ Context.contextProcessors
+
 -- | Add `message` variable from session to context
 addMessage :: ContextProcessor
 addMessage = do
diff --git a/Framework/TEngine/TemplateUtil.hs b/Framework/TEngine/TemplateUtil.hs
index c90cb64..6dbf29d 100644
--- a/Framework/TEngine/TemplateUtil.hs
+++ b/Framework/TEngine/TemplateUtil.hs
@@ -16,7 +16,7 @@ import Framework.Controller
 import Framework.API.Sessions
 import Framework.API.Cache
 import Framework.Cache
-import Framework.ContextProcessors (defaultProcessors)
+import Framework.ContextProcessors (contextProcessors)

 instance (Ord k, Show k,Show v, Read k, Read v) => Serializable (M.Map k v) where
     toString = show
@@ -27,7 +27,7 @@ renderToResponse name pairs = ok $! render name (M.fromList pairs)

 processContext :: Context -> Controller ActionConfig HttpResponse Context
 processContext ctx = do
-    res <- concatC defaultProcessors
+    res <- concatC contextProcessors
     return $ ctx++res

 renderToResponseM :: String -> Context -> HttpController
diff --git a/README.ru b/README.ru
index 37c0044..bf2823a 100644
--- a/README.ru
+++ b/README.ru
@@ -152,12 +152,16 @@ controller = do
  * Response Middlewares: это функции StaticConfig -> HttpResponse -> IO
    HttpResponse, через которые проходит ответ прежде чем он будет отдан
    веб-сервером.
+ * Context Processors: эти функции могут добавлять переменные в контекст (набор
+   переменных), который передаётся из контроллеров в шаблоны.
  * Обработчики исключений: приложение может определить свои обработчики для
    request exceptions и controller exceptions.

-Все эти функции должны быть определены в приложении в модуле Settings.hs,
-оттуда их импортируют разные части фреймворка. В нём же определяется
-соответствие возможных сигналов и их обработчиков.
+Все эти функции (кроме context processors) должны быть определены в приложении
+в модуле Settings.hs, оттуда их импортируют разные части фреймворка. В нём же
+определяется соответствие возможных сигналов и их обработчиков.
+
+Context processors должны быть определены в приложении в файле Context.hs.

 ## Интернационализация
ViewGit