]> Devoid-pointer.net GitWeb - Nine-Q.git/commitdiff
Add FAQ page
authorMichal Malý <madcatxster@devoid-pointer.net>
Wed, 24 Dec 2014 03:29:11 +0000 (04:29 +0100)
committerMichal Malý <madcatxster@devoid-pointer.net>
Wed, 24 Dec 2014 03:29:11 +0000 (04:29 +0100)
bin/styles/main.css
bin/templates/face_index.html
bin/templates/static/faq.html [new file with mode: 0644]
src/face_generators/face_generator_static.adb
src/face_generators/face_generator_static.ads
src/handlers/handler_static.adb [new file with mode: 0644]
src/handlers/handler_static.ads [new file with mode: 0644]
src/handlers/handlers.adb

index c351d81e616ebb9c779f4655a7187a8bfef1d399..c66f5c301023b57e01a665e85421d631900e5b77 100644 (file)
   font-weight: bold;
 }
 
+.normal_text {
+  font-size: 12pt;
+  margin-left: 32px;
+  margin-right: 32px;
+  margin-bottom: 16px;
+}
+
 .problem_form {
   margin-left: 32px;
   margin-right: 32px;
@@ -200,6 +207,11 @@ div.hint_caption {
   margin-bottom: 16px;
 }
 
+hr.main_navlink {
+  display: inline-block;
+  width: 480px;
+}
+
 img.expand_section {
   width: 14pt;
   height: 14pt;
index 47ef538c75f8060fb1898070305ca1c34a2940d7..5a1d4c9ecbd61a191f36efdac801726a5b3b11b5 100644 (file)
@@ -1,5 +1,6 @@
   <a class="main_navlink" href="/start?problem_category=ACIDOBAZIC">pH jednosytné kyseliny/báze</a><br />
   <a class="main_navlink" href="/start?problem_category=SOLUBILITY">Srážecí rovnováhy</a><br />
   <a class="main_navlink" href="/start?problem_category=TITRATION_CURVE">Titrační křivka</a><br />
-
+  <hr class="main_navlink" />
+  <a class="main_navlink" href="/static/faq.html">FAQ</a><br />
 
diff --git a/bin/templates/static/faq.html b/bin/templates/static/faq.html
new file mode 100644 (file)
index 0000000..236835a
--- /dev/null
@@ -0,0 +1,25 @@
+  <div class="backgrounded_block">
+    <div class="caption_v1">
+      Jak to funguje?
+    </div>
+    <div class="normal_text">
+      Generátor funguje &bdquo;abstraktně&rdquo;, vymyslí si smysluplné hodnoty a konstanty, ze kterých pak sestaví zadání příkladu. Žádná baterie příkladů s reálnými látkami zatím neexistuje.
+    </div>
+
+    <div class="caption_v1">
+      Jak se to používá?
+    </div>
+    <div class="normal_text">
+      Výsledek (výsledky) Vašeho výpočtu zapiště to příšlušného pole a kliknětě na &bdquo;Zkontrolovat&bdquo;. Výsledky, které by měly hodně desetinných míst nebo nul, lze je zapsat &bdquo;chytrá kalkulačka-style&rdquo; třeba takto: <pre>1,234e-5</pre>
+      Pokud do výsledkového pole napíšete něco, co nelze rozumně interpretovat jako číslo, generátor označí odpověď jako nesprávně zadanou.
+      <br />
+      Další příklad Vám generátor vymyslí po kliknutí na tlačítko &bdquo;Další příklad&rdquo;. Tam, kde to má smysl můžete zároveň změnit i parametry příkladu.
+    </div>
+
+    <div class="caption_v1">
+      Můj výsledek je správný, ale generátor tvrdí něco jiného.
+    </div>
+    <div class="normal_text">
+      To je dost dobře možné. Pokud je rozdíl mezi Vaším a vypočteným výsledkem malý, nejspíš za to může zaokrouhlovací nepřesnost. Pokud jde o větší rozdíl, klidně může být v generátoru nějaká chyba, v čemže případě mi to <a class="default_link" href="mailto:webmaster-nineq@devoid-pointer.net">řekněte</a>.
+    </div>
+  </div>
\ No newline at end of file
index 37fa136beffa4ac702a0187ecce218cf10c328c3..2e430c4d6ea66902a4542aa6385e1b79dc1dd040 100644 (file)
@@ -2,6 +2,25 @@ with AWS.Templates;
 
 package body Face_Generator_Static is
 
+  function Display_Static_Page(Path: in String) return HTML_Code is
+    use AWS.Templates;
+
+    Translations: Translate_Set;
+    HTML: HTML_Code;
+    Temp: HTML_Code;
+  begin
+    Insert(Translations, Assoc("HEADER_CAPTION", "..."));
+    HTML := Parse(Filename => "templates/header.html", Translations => Translations);
+
+    Temp := Parse(Filename => Path, Cached => True);
+    Append_HTML(Source => HTML, New_Item => Temp);
+
+    Temp := Parse(Filename => "templates/footer.html");
+    Append_HTML(Source => HTML, New_Item => Temp);
+
+    return HTML;
+  end Display_Static_Page;
+
   function Error_Display_Answer return HTML_Code is
     use AWS.Templates;
   begin
index 2adf9ff3bed8b5151fb5923942df823f54a1aa13..7059c230ea64321ab582845b09c56efedfced17f 100644 (file)
@@ -2,6 +2,7 @@ with Global_Types;
 
 use Global_Types;
 package Face_Generator_Static is
+  function Display_Static_Page(Path: in String) return HTML_Code;
   function Error_Display_Answer return HTML_Code;
   function Error_Display_Assignment return HTML_Code;
   function Error_UID_Registration return HTML_Code;
diff --git a/src/handlers/handler_static.adb b/src/handlers/handler_static.adb
new file mode 100644 (file)
index 0000000..1e7d028
--- /dev/null
@@ -0,0 +1,51 @@
+with Ada.Strings.Fixed;
+with AWS.Messages;
+with AWS.MIME;
+with AWS.Response;
+with AWS.Status;
+with Ada.Text_IO;
+with Face_Generator_Static;
+with Global_Types;
+
+use Global_Types;
+package body Handler_Static is
+
+  function File_Exists(Path: in String) return Boolean is
+    File: Ada.Text_IO.File_Type;
+  begin
+    begin
+      Ada.Text_IO.Open(File => File, Mode => Ada.Text_IO.In_File, Name => Path);
+      Ada.Text_IO.Close(File);
+      return True;
+    exception
+      when Ada.Text_IO.Name_Error =>
+       return False;
+    end;
+  end File_Exists;
+
+  function Handle(Request: AWS.Status.Data) return AWS.Response.Data is
+    use Ada.Strings.Fixed;
+
+    URI: constant String := AWS.Status.URI(Request);
+    Idx: Positive;
+  begin
+    Idx := Index(Source => URI, Pattern => "/", From => URI'Last, Going => Ada.Strings.Backward);
+    declare
+      File_Path: constant String := "templates/static/" & URI(Idx + 1 .. URI'Last);
+    begin
+      if File_Exists(File_Path) = False then
+       return AWS.Response.URL(Location => "/");
+      else
+       return AWS.Response.Build(Content_Type => AWS.MIME.Text_HTML,
+                                 Message_Body => HTML_To_Fixed_String(Face_Generator_Static.Display_Static_Page(File_Path)),
+                                 Status_Code => AWS.Messages.S200);
+      end if;
+    end;
+  end Handle;
+
+  function Callback return AWS.Dispatchers.Callback.Handler is
+  begin
+    return AWS.Dispatchers.Callback.Create(Handle'Access);
+  end Callback;
+
+end Handler_Static;
diff --git a/src/handlers/handler_static.ads b/src/handlers/handler_static.ads
new file mode 100644 (file)
index 0000000..6be4e3f
--- /dev/null
@@ -0,0 +1,5 @@
+with AWS.Dispatchers.Callback;
+
+package Handler_Static is
+  function Callback return AWS.Dispatchers.Callback.Handler;
+end Handler_Static;
index 2af5b58d4abc24b119f73068ac302f4424e084a4..92bb41c5f88ef4bd49161cd96a4917a6ad6d121b 100644 (file)
@@ -4,6 +4,7 @@ with Handler_Images;
 with Handler_Next_Problem;
 with Handler_Resources;
 with Handler_Start;
+with Handler_Static;
 with Handler_Styles;
 
 package body Handlers is
@@ -20,6 +21,9 @@ package body Handlers is
                     Action => Handler_Next_Problem.Callback);
     Handler.Register(URI => "/start",
                     Action => Handler_Start.Callback);
+    Handler.Register(URI => "/static",
+                    Action => Handler_Static.Callback,
+                    Prefix => True);
     Handler.Register(URI => "/main_stylesheet",
                     Action => Handler_Styles.Main_Callback);
     Handler.Register(URI => "/resources",