From: Michal Malý Date: Wed, 24 Dec 2014 03:29:11 +0000 (+0100) Subject: Add FAQ page X-Git-Url: https://gitweb.devoid-pointer.net/?a=commitdiff_plain;h=63181a4fe3f2c232e47d5fa67a293d8a39b7ffdf;p=Nine-Q.git Add FAQ page --- diff --git a/bin/styles/main.css b/bin/styles/main.css index c351d81..c66f5c3 100644 --- a/bin/styles/main.css +++ b/bin/styles/main.css @@ -77,6 +77,13 @@ 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; diff --git a/bin/templates/face_index.html b/bin/templates/face_index.html index 47ef538..5a1d4c9 100644 --- a/bin/templates/face_index.html +++ b/bin/templates/face_index.html @@ -1,5 +1,6 @@ pH jednosytné kyseliny/báze
Srážecí rovnováhy
Titrační křivka
- + + FAQ
diff --git a/bin/templates/static/faq.html b/bin/templates/static/faq.html new file mode 100644 index 0000000..236835a --- /dev/null +++ b/bin/templates/static/faq.html @@ -0,0 +1,25 @@ +
+
+ Jak to funguje? +
+
+ Generátor funguje „abstraktně”, 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. +
+ +
+ Jak se to používá? +
+
+ Výsledek (výsledky) VaÅ¡eho výpočtu zapiÅ¡tě to příšluÅ¡ného pole a kliknětě na „Zkontrolovat„. Výsledky, které by měly hodně desetinných míst nebo nul, lze je zapsat „chytrá kalkulačka-style” třeba takto:
1,234e-5
+ Pokud do výsledkového pole napíšete něco, co nelze rozumně interpretovat jako číslo, generátor označí odpověď jako nesprávně zadanou. +
+ Další příklad Vám generátor vymyslí po kliknutí na tlačítko „Další příklad”. Tam, kde to má smysl můžete zároveň změnit i parametry příkladu. +
+ +
+ Můj výsledek je správný, ale generátor tvrdí něco jiného. +
+
+ 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 řekněte. +
+
\ No newline at end of file diff --git a/src/face_generators/face_generator_static.adb b/src/face_generators/face_generator_static.adb index 37fa136..2e430c4 100644 --- a/src/face_generators/face_generator_static.adb +++ b/src/face_generators/face_generator_static.adb @@ -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 diff --git a/src/face_generators/face_generator_static.ads b/src/face_generators/face_generator_static.ads index 2adf9ff..7059c23 100644 --- a/src/face_generators/face_generator_static.ads +++ b/src/face_generators/face_generator_static.ads @@ -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 index 0000000..1e7d028 --- /dev/null +++ b/src/handlers/handler_static.adb @@ -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 index 0000000..6be4e3f --- /dev/null +++ b/src/handlers/handler_static.ads @@ -0,0 +1,5 @@ +with AWS.Dispatchers.Callback; + +package Handler_Static is + function Callback return AWS.Dispatchers.Callback.Handler; +end Handler_Static; diff --git a/src/handlers/handlers.adb b/src/handlers/handlers.adb index 2af5b58..92bb41c 100644 --- a/src/handlers/handlers.adb +++ b/src/handlers/handlers.adb @@ -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",