From c4962725a340815f633ea60c5b71355453b51fd6 Mon Sep 17 00:00:00 2001 From: SirCotare Date: Mon, 28 May 2012 21:09:44 +0200 Subject: [PATCH] #1470 Achievement summary added; improved menu handling; Class scheme (UML) added; --HG-- branch : gsoc2012-achievements --- .../app_achievements/_doc/Class_scheme.dia | Bin 0 -> 3460 bytes .../app_achievements/_doc/Class_scheme.png | Bin 0 -> 21888 bytes .../app/app_achievements/_doc/ER_scheme.dia | Bin 10257 -> 10461 bytes .../app/app_achievements/_doc/ER_scheme.png | Bin 184896 -> 189386 bytes .../app/app_achievements/_doc/devshot_002.jpg | Bin 0 -> 152929 bytes .../app/app_achievements/_doc/testdata.sql | 66 ++++++++++++++-- .../include/AchMenu_class.php | 36 ++++++++- .../include/AchSummary_class.php | 65 ++++++++++++++-- .../include/ach_render_web.php | 73 +++++++++++++++--- code/web/app/app_achievements/index.php | 24 +++--- code/web/app/app_achievements/lang.php | 30 ++++++- 11 files changed, 254 insertions(+), 40 deletions(-) create mode 100644 code/web/app/app_achievements/_doc/Class_scheme.dia create mode 100644 code/web/app/app_achievements/_doc/Class_scheme.png create mode 100644 code/web/app/app_achievements/_doc/devshot_002.jpg diff --git a/code/web/app/app_achievements/_doc/Class_scheme.dia b/code/web/app/app_achievements/_doc/Class_scheme.dia new file mode 100644 index 0000000000000000000000000000000000000000..cee3d3deb7dc8fcff69c7cfbc054ab5ee11a47ff GIT binary patch literal 3460 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 literal 0 HcmV?d00001 diff --git a/code/web/app/app_achievements/_doc/ER_scheme.dia b/code/web/app/app_achievements/_doc/ER_scheme.dia index 97df04ff79df34d025f901c86d0858f445047eea..3460357022dad3d442b6618fe4d9d79663cce33f 100644 GIT binary patch delta 9872 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