diff --git a/code/web/app/app_achievements/_doc/app_achievements.sql b/code/web/app/app_achievements/_doc/app_achievements.sql
index 79d22f5f3..15d92eb41 100644
--- a/code/web/app/app_achievements/_doc/app_achievements.sql
+++ b/code/web/app/app_achievements/_doc/app_achievements.sql
@@ -3,7 +3,7 @@
-- http://www.phpmyadmin.net
--
-- Host: localhost
--- Erstellungszeit: 25. Mai 2012 um 11:46
+-- Erstellungszeit: 27. Mai 2012 um 21:05
-- Server Version: 5.1.46
-- PHP-Version: 5.3.2
@@ -32,9 +32,9 @@ CREATE TABLE IF NOT EXISTS `ach_achievement` (
`aa_tie_race` varchar(64) COLLATE utf8_bin DEFAULT NULL,
`aa_tie_cult` varchar(64) COLLATE utf8_bin DEFAULT NULL,
`aa_tie_civ` varchar(64) COLLATE utf8_bin DEFAULT NULL,
- `aa_image` varchar(255) COLLATE utf8_bin NOT NULL,
+ `aa_image` varchar(64) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`aa_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=5 ;
-- --------------------------------------------------------
@@ -62,7 +62,7 @@ CREATE TABLE IF NOT EXISTS `ach_atom` (
`atom_ruleset` blob NOT NULL,
`atom_primary` tinyint(1) unsigned NOT NULL,
PRIMARY KEY (`atom_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ;
-- --------------------------------------------------------
@@ -73,8 +73,10 @@ CREATE TABLE IF NOT EXISTS `ach_atom` (
CREATE TABLE IF NOT EXISTS `ach_category` (
`ac_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`ac_parent` bigint(20) unsigned DEFAULT NULL,
+ `ac_order` smallint(5) unsigned NOT NULL,
+ `ac_image` varchar(64) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`ac_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=3 ;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=6 ;
-- --------------------------------------------------------
@@ -100,9 +102,9 @@ CREATE TABLE IF NOT EXISTS `ach_objective` (
`ao_perk` bigint(20) unsigned NOT NULL,
`ao_condition` enum('all','any','value') COLLATE utf8_bin NOT NULL,
`ao_value` int(10) unsigned DEFAULT NULL,
- `ao_display` enum('simple','meta','value') COLLATE utf8_bin NOT NULL DEFAULT 'simple',
+ `ao_display` enum('simple','meta','value','hidden') COLLATE utf8_bin NOT NULL DEFAULT 'hidden',
PRIMARY KEY (`ao_id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=14 ;
-- --------------------------------------------------------
@@ -130,7 +132,7 @@ CREATE TABLE IF NOT EXISTS `ach_perk` (
`ap_value` int(10) unsigned NOT NULL,
PRIMARY KEY (`ap_id`),
UNIQUE KEY `ap_parent` (`ap_parent`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ;
+) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=7 ;
-- --------------------------------------------------------
@@ -156,7 +158,7 @@ CREATE TABLE IF NOT EXISTS `ach_player_atom` (
`apa_player` bigint(20) unsigned NOT NULL,
`apa_date` bigint(20) unsigned NOT NULL,
`apa_expire` blob NOT NULL,
- PRIMARY KEY (`apa_atom`,`apa_player`)
+ KEY `apa_atom` (`apa_atom`,`apa_player`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
-- --------------------------------------------------------
diff --git a/code/web/app/app_achievements/_doc/devshot_001.jpg b/code/web/app/app_achievements/_doc/devshot_001.jpg
new file mode 100644
index 000000000..e8777e896
Binary files /dev/null and b/code/web/app/app_achievements/_doc/devshot_001.jpg differ
diff --git a/code/web/app/app_achievements/_doc/testdata.sql b/code/web/app/app_achievements/_doc/testdata.sql
new file mode 100644
index 000000000..92a0074f5
--- /dev/null
+++ b/code/web/app/app_achievements/_doc/testdata.sql
@@ -0,0 +1,159 @@
+-- phpMyAdmin SQL Dump
+-- version 3.3.3
+-- http://www.phpmyadmin.net
+--
+-- Host: localhost
+-- Erstellungszeit: 27. Mai 2012 um 21:06
+-- Server Version: 5.1.46
+-- PHP-Version: 5.3.2
+
+SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+
+--
+-- Datenbank: `app_achievements`
+--
+
+--
+-- Daten für Tabelle `ach_achievement`
+--
+
+INSERT INTO `ach_achievement` (`aa_id`, `aa_category`, `aa_parent`, `aa_tie_race`, `aa_tie_cult`, `aa_tie_civ`, `aa_image`) VALUES
+(1, 1, NULL, NULL, NULL, NULL, ''),
+(2, 1, NULL, NULL, NULL, NULL, ''),
+(3, 1, NULL, NULL, NULL, NULL, ''),
+(4, 1, NULL, NULL, NULL, NULL, '');
+
+--
+-- Daten für Tabelle `ach_achievement_lang`
+--
+
+INSERT INTO `ach_achievement_lang` (`aal_achievement`, `aal_lang`, `aal_name`) VALUES
+(1, 'en', 'Kill the Bait'),
+(2, 'en', 'Grill the Bill'),
+(3, 'en', 'Killing Spree'),
+(4, 'en', 'The Burning Desert');
+
+--
+-- Daten für Tabelle `ach_atom`
+--
+
+INSERT INTO `ach_atom` (`atom_id`, `atom_objective`, `atom_mandatory`, `atom_ruleset`, `atom_primary`) VALUES
+(1, 13, 0, '', 0);
+
+--
+-- Daten für Tabelle `ach_category`
+--
+
+INSERT INTO `ach_category` (`ac_id`, `ac_parent`, `ac_order`, `ac_image`) VALUES
+(1, NULL, 0, ''),
+(2, NULL, 0, ''),
+(3, 1, 0, ''),
+(4, 1, 0, ''),
+(5, 1, 0, '');
+
+--
+-- Daten für Tabelle `ach_category_lang`
+--
+
+INSERT INTO `ach_category_lang` (`acl_category`, `acl_lang`, `acl_name`) VALUES
+(1, 'en', 'Exploration'),
+(2, 'en', 'Occupations'),
+(3, 'en', 'Aeden Aqueous'),
+(4, 'en', 'Burning Desert'),
+(5, 'en', 'Witherings');
+
+--
+-- Daten für Tabelle `ach_objective`
+--
+
+INSERT INTO `ach_objective` (`ao_id`, `ao_perk`, `ao_condition`, `ao_value`, `ao_display`) VALUES
+(1, 1, 'all', NULL, 'simple'),
+(2, 1, 'all', NULL, 'simple'),
+(3, 1, 'all', NULL, 'simple'),
+(4, 1, 'all', NULL, 'simple'),
+(5, 1, 'all', NULL, 'simple'),
+(6, 2, 'all', NULL, 'hidden'),
+(7, 3, 'all', 30, 'value'),
+(8, 4, 'all', NULL, 'meta'),
+(9, 4, 'all', NULL, 'meta'),
+(10, 4, 'all', NULL, 'meta'),
+(11, 4, 'all', NULL, 'meta'),
+(12, 4, 'all', NULL, 'meta'),
+(13, 3, 'all', 30, 'value');
+
+--
+-- Daten für Tabelle `ach_objective_lang`
+--
+
+INSERT INTO `ach_objective_lang` (`aol_objective`, `aol_lang`, `aol_name`) VALUES
+(1, 'en', 'Kill A'),
+(2, 'en', 'Kill B'),
+(3, 'en', 'Kill C'),
+(4, 'en', 'Kill D'),
+(5, 'en', 'Kill E'),
+(7, 'en', 'Kill 30 random Yubos'),
+(8, 'en', 'Meta A'),
+(9, 'en', 'Meta B'),
+(10, 'en', 'Meta C'),
+(11, 'en', 'Meta D'),
+(12, 'en', 'Meta E'),
+(13, 'en', 'Kill 30 random Gingos');
+
+--
+-- Daten für Tabelle `ach_perk`
+--
+
+INSERT INTO `ach_perk` (`ap_id`, `ap_achievement`, `ap_parent`, `ap_value`) VALUES
+(1, 1, NULL, 50),
+(2, 2, NULL, 10),
+(3, 3, NULL, 10),
+(4, 4, NULL, 20),
+(5, 2, NULL, 10),
+(6, 2, NULL, 10);
+
+--
+-- Daten für Tabelle `ach_perk_lang`
+--
+
+INSERT INTO `ach_perk_lang` (`apl_perk`, `apl_lang`, `apl_name`) VALUES
+(1, 'en', 'Murder every boss listed below'),
+(2, 'en', 'Grill "Bill the Vile"'),
+(3, 'en', 'Kill 30 of each mob type listed below'),
+(4, 'en', 'Explore all regions of the Burning Desert'),
+(5, 'en', 'Grill "Peter the Pan"'),
+(6, 'en', 'Grill "Ivan the Slayer"');
+
+--
+-- Daten für Tabelle `ach_player_atom`
+--
+
+INSERT INTO `ach_player_atom` (`apa_atom`, `apa_player`, `apa_date`, `apa_expire`) VALUES
+(1, 1, 0, '');
+
+--
+-- Daten für Tabelle `ach_player_objective`
+--
+
+INSERT INTO `ach_player_objective` (`apo_objective`, `apo_player`, `apo_date`) VALUES
+(4, 1, 500),
+(7, 1, 500),
+(11, 1, 500);
+
+--
+-- Daten für Tabelle `ach_player_perk`
+--
+
+INSERT INTO `ach_player_perk` (`app_perk`, `app_player`, `app_date`) VALUES
+(2, 1, 600),
+(5, 1, 100);
+
+--
+-- Daten für Tabelle `ach_player_valuecache`
+--
+
diff --git a/code/web/app/app_achievements/include/AchAchievement_class.php b/code/web/app/app_achievements/include/AchAchievement_class.php
index 4b92d9ffc..532d6c160 100644
--- a/code/web/app/app_achievements/include/AchAchievement_class.php
+++ b/code/web/app/app_achievements/include/AchAchievement_class.php
@@ -9,7 +9,7 @@
private $image;
private $name;
- function AchAchievement(&$data,$lang) {
+ function AchAchievement(&$data,$lang,$user) {
global $db;
$this->id = $data['aa_id'];
@@ -20,23 +20,33 @@
$this->tie_cult = $data['aa_tie_cult'];
$this->image = $data['aa_image'];
$this->name = $data['aal_name'];
+ $this->done = $data[''];
- $res = $db->sqlQuery("SELECT * FROM ach_perk LEFT JOIN (ach_perk_lang) ON (apl_lang='".$lang."' AND apl_achievement=ap_id) WHERE ap_achievement='".$this->id."' AND ap_parent IS NULL");
+ #echo $this->id;
+
+ $res = $db->sqlQuery("SELECT * FROM ach_perk LEFT JOIN (ach_perk_lang) ON (apl_lang='".$lang."' AND apl_perk=ap_id) LEFT JOIN (ach_player_perk) ON (app_perk=ap_id AND app_player='".$user."') WHERE ap_achievement='".$this->id."' AND ap_parent IS NULL");
#MISSING: or parent is done
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
- $tmp = new AchPerk($res[$i],$lang);
+ #echo "Z";
+ $tmp = new AchPerk($res[$i],$lang,$user);
- $this->child_open[] = sizeof($this->nodes);
- $this->nodes[] = $tmp;
- /*if($res[$i]['']) {
+ #echo var_export($tmp,true);
+
+
+ if($tmp->isDone()) {
+ $this->child_done[] = sizeof($this->nodes);
}
else {
-
- }*/
+ $this->child_open[] = sizeof($this->nodes);
+ }
+ $this->nodes[] = $tmp;
#MISSING: divide into groups -> open/done
}
+
+ #echo var_export($this->child_open,true);
+ #echo "X-".$this->hasOpen();
}
function getID() {
@@ -67,12 +77,16 @@
return $this->name;
}
- function getValue() {
+ function getValueDone() {
$val = 0;
foreach($this->child_done as $elem) {
$val += $this->nodes[$elem]->getValue();
}
return $val;
}
+
+ function getValueOpen() {
+ return $this->nodes[$this->child_open[0]]->getValue();
+ }
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/include/AchCategory_class.php b/code/web/app/app_achievements/include/AchCategory_class.php
index d7b27fd6c..a18f523af 100644
--- a/code/web/app/app_achievements/include/AchCategory_class.php
+++ b/code/web/app/app_achievements/include/AchCategory_class.php
@@ -2,16 +2,18 @@
class AchCategory extends AchList {
private $id = false;
- function AchCategory($id,$lang = 'en') {
+ function AchCategory($id,$user = 0,$lang = 'en') {
global $db;
$this->id = $id;
- $res = $db->sqlQuery("SELECT * FROM ach_achievement LEFT JOIN (ach_achievement_lang) ON (aal_lang='".$lang."' AND aal_achievement=aa_id) WHERE aa_category='".$this->id."' AND aa_parent IS NULL");
+ $res = $db->sqlQuery("SELECT * FROM ach_achievement LEFT JOIN (ach_achievement_lang) ON (aal_lang='".$lang."' AND aal_achievement=aa_id) WHERE aa_category='".$this->id."' AND aa_parent IS NULL ORDER by aal_name ASC");
#MISSING: or parent is done
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
- $tmp = new AchAchievement($res[$i],$lang);
+ #echo "Y";
+ $tmp = new AchAchievement($res[$i],$lang,$user);
+ #echo var_export($tmp,true);
if($tmp->hasOpen()) {
$this->child_open[] = sizeof($this->nodes);
}
diff --git a/code/web/app/app_achievements/include/AchCommon_class.php b/code/web/app/app_achievements/include/AchCommon_class.php
index f0c0778b6..e2200c5c5 100644
--- a/code/web/app/app_achievements/include/AchCommon_class.php
+++ b/code/web/app/app_achievements/include/AchCommon_class.php
@@ -1,6 +1,6 @@
nodes);
@@ -20,8 +20,8 @@
}
abstract class AchList extends RenderNodeIterator {
- private $child_done = array();
- private $child_open = array();
+ protected $child_done = array();
+ protected $child_open = array();
function getDone() {
return $this->child_done;
diff --git a/code/web/app/app_achievements/include/AchMenu_class.php b/code/web/app/app_achievements/include/AchMenu_class.php
index be9fd49fc..9ae468406 100644
--- a/code/web/app/app_achievements/include/AchMenu_class.php
+++ b/code/web/app/app_achievements/include/AchMenu_class.php
@@ -1,22 +1,32 @@
sqlQuery("SELECT * FROM ach_category LEFT JOIN (ach_category_lang) ON (acl_lang='".$lang."' AND acl_category=ac_id) WHERE ac_parent IS NULL");
- #MISSING: ORDER by
+ $this->open = $open;
+
+ $res = $db->sqlQuery("SELECT * FROM ach_category LEFT JOIN (ach_category_lang) ON (acl_lang='".$lang."' AND acl_category=ac_id) WHERE ac_parent IS NULL ORDER by ac_order ASC, acl_name ASC");
+
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
$this->nodes[] = new AchMenuNode($res[$i],$open,$lang);
}
}
+
+ function getCat() {
+ return $this->open;
+ }
}
class AchMenuNode extends RenderNodeIterator {
- private $id = false;
- private $parent = false;
- private $name = null;
- private $open = false;
+ private $id;
+ private $parent;
+ private $name;
+ private $open;
+ private $image;
+ private $order;
function AchMenuNode(&$data,$open,$lang) {
global $db;
@@ -24,11 +34,12 @@
$this->id = $data['ac_id'];
$this->parent = $data['ac_parent'];
$this->name = $data['acl_name'];
-
+ $this->image = $data['ac_image'];
+ $this->order = $data['ac_order'];
$this->open = ($open==$data['ac_id']);
- $res = $db->sqlQuery("SELECT * FROM ach_category LEFT JOIN (ach_category_lang) ON (acl_lang='".$lang."' AND acl_category=ac_id) WHERE ac_parent='".$this->id."'");
- #MISSING: ORDER by
+ $res = $db->sqlQuery("SELECT * FROM ach_category LEFT JOIN (ach_category_lang) ON (acl_lang='".$lang."' AND acl_category=ac_id) WHERE ac_parent='".$this->id."' ORDER by ac_order ASC, acl_name ASC");
+
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
$this->nodes[] = new AchMenuNode($res[$i],$open,$lang);
@@ -50,5 +61,13 @@
function isOpen() {
return $this->open;
}
+
+ function getImage() {
+ return $this->image;
+ }
+
+ function getOrder() {
+ return $this->order;
+ }
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/include/AchObjective_class.php b/code/web/app/app_achievements/include/AchObjective_class.php
index dd7d6616f..d8a596b8c 100644
--- a/code/web/app/app_achievements/include/AchObjective_class.php
+++ b/code/web/app/app_achievements/include/AchObjective_class.php
@@ -6,14 +6,26 @@
private $value;
private $name;
private $display;
+ private $done;
+ private $progress;
+
+ function AchObjective(&$data,$lang,$user) {
+ global $db;
- function AchObjective(&$data,$lang) {
$this->id = $data['ao_id'];
$this->perk = $data['ao_perk'];
$this->condition = $data['ao_condition'];
$this->value = $data['ao_value'];
$this->name = $data['aol_name'];
$this->display = $data['ao_display'];
+ $this->done = $data['apo_date'];
+
+ $this->progress = $this->value;
+
+ if(!$this->isDone()) {
+ $res = $db->sqlQuery("SELECT count(*) as anz FROM ach_player_atom,ach_atom WHERE apa_atom=atom_id AND atom_objective='".$this->id."' AND apa_player='".$user."'");
+ $this->progress = $res[0]['anz'];
+ }
}
function getID() {
@@ -32,6 +44,10 @@
return $this->value;
}
+ function getProgress() {
+ return $this->progress;
+ }
+
function getName() {
return $this->name;
}
@@ -39,5 +55,13 @@
function getDisplay() {
return $this->display;
}
+
+ function isDone() {
+ return ($this->done > 0);
+ }
+
+ function getDone() {
+ return $this->done;
+ }
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/include/AchPerk_class.php b/code/web/app/app_achievements/include/AchPerk_class.php
index 196d3bae5..30adff2e6 100644
--- a/code/web/app/app_achievements/include/AchPerk_class.php
+++ b/code/web/app/app_achievements/include/AchPerk_class.php
@@ -5,8 +5,9 @@
private $achievement;
private $value;
private $name;
+ private $done;
- function AchPerk(&$data,$lang) {
+ function AchPerk(&$data,$lang,$user) {
global $db;
$this->id = $data['ap_id'];
@@ -14,11 +15,12 @@
$this->achievement = $data['ap_achievement'];
$this->value = $data['ap_value'];
$this->name = $data['apl_name'];
+ $this->done = $data['app_date'];
- $res = $db->sqlQuery("SELECT * FROM ach_objective LEFT JOIN (ach_objective_lang) ON (aol_lang='".$lang."' AND aol_objective=ao_id) WHERE ao_perk='".$this->id."'");
+ $res = $db->sqlQuery("SELECT * FROM ach_objective LEFT JOIN (ach_objective_lang) ON (aol_lang='".$lang."' AND aol_objective=ao_id) LEFT JOIN (ach_player_objective) ON (apo_objective=ao_id AND apo_player='".$user."') WHERE ao_perk='".$this->id."'");
$sz = sizeof($res);
for($i=0;$i<$sz;$i++) {
- $this->nodes[] = new AchObjective($res[$i],$lang);
+ $this->nodes[] = new AchObjective($res[$i],$lang,$user);
}
}
@@ -41,5 +43,22 @@
function getName() {
return $this->name;
}
+
+ function objDrawable() {
+ foreach($this->nodes as $elem) {
+ if($elem->getDisplay() != "hidden") {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function isDone() {
+ return ($this->done > 0);
+ }
+
+ function getDone() {
+ return $this->done;
+ }
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/include/AchSummary_class.php b/code/web/app/app_achievements/include/AchSummary_class.php
index 160854106..ba402726a 100644
--- a/code/web/app/app_achievements/include/AchSummary_class.php
+++ b/code/web/app/app_achievements/include/AchSummary_class.php
@@ -4,7 +4,7 @@
function AchSummary($size = 10,$lang = 'en') {
global $db;
- $res = $db->sqlQuery("SELECT * FROM ach_achievement LEFT JOIN (ach_achievement_lang) ON (aal_lang='".$lang."' AND aal_achievement=aa_id) WHERE aa_category='".$this->id."' AND aa_parent IS NULL");
+ $res = $db->sqlQuery("SELECT * FROM ach_achievement LEFT JOIN (ach_achievement_lang) ON (aal_lang='".$lang."' AND aal_achievement=aa_id) WHERE aa_parent IS NULL");
#MISSING: or parent is done
#MISSING: player's status on achievement
$sz = sizeof($res);
diff --git a/code/web/app/app_achievements/include/ach_render_ig.php b/code/web/app/app_achievements/include/ach_render_ig.php
index 36f0fdbf6..4abf20f83 100644
--- a/code/web/app/app_achievements/include/ach_render_ig.php
+++ b/code/web/app/app_achievements/include/ach_render_ig.php
@@ -1,21 +1,285 @@
-
- ';
+
+ return $html;
+ }
+
+ function ach_render_perk_open(&$ach) {
+ #echo var_export($perk_list,true);
+ $html = "";
+
+ $perk_list = $ach->getOpen();
+
+ $perk = $ach->getChild($perk_list[0]);
+
+ $html .= "".$perk->getName()."";
+ if($perk->objDrawable()) {
+ $html .= " ".ach_render_obj_list($perk->getChildren());
+ }
+
+ return $html;
+ }
+
+ function ach_render_perk_done(&$ach) {
+ $html = "";
+
+ $perk_list = $ach->getDone();
+
+ foreach($perk_list as $elem) {
+ $perk = $ach->getChild($elem);
+ $html .= "".$perk->getName()." ( ".date('d.m.Y',$perk->getDone())." ) ".$perk->getValue()." ";
+ }
+ /*if($perk->objDrawable()) {
+ $html .= " ".ach_render_obj_list($perk->getChildren());
+ }*/
+
+ return $html;
+ }
+
+ function ach_render_obj_list(&$obj) {
+ $html = "";
+
+ $i = 0;
+ $skip = false;
+
+ foreach($obj as $elem) {
+ if(($i%2) == 0) {
+ $html .= "";
+ }
+
+ switch($elem->getDisplay()) {
+ case "meta":
+ $html .= "".ach_render_obj_meta($elem)." | ";
+ break;
+ case "value":
+ if(($i%2) == 1) {
+ $html .= " ";
+ }
+ $html .= "".ach_render_obj_value($elem)." | ";
+ $i++;
+ break;
+ case "simple":
+ $html .= "".ach_render_obj_simple($elem)." | ";
+ break;
+ case "hidden":
+ default:
+ //do nothing
+ $skip = true;
+ break;
+ }
+
+ if(($i%2) == 1) {
+ $html .= " ";
+ }
+
+
+ if(!$skip) {
+ $i++;
+ }
+ $skip = false;
+ }
+
+ if(($i%2) == 1) {
+ $html .= "";
+ }
+
+ $html .= " ";
+
+ return $html;
+ }
+
+ function ach_render_obj_simple(&$obj) {
+ $html = "";
+ if($obj->isdone()) {
+ $html .= " ";
+ }
+ else {
+ $html .= " ";
+ }
+
+ $html .= $obj->getName()."";
+
+ return $html;
+ }
+
+ function ach_render_obj_meta(&$obj) {
+ $html = "";
+ if($obj->isdone()) {
+ $col = "#71BE02";
+ $grey = "";
+ }
+ else {
+ $col = "#999999";
+ $grey = "grey/";
+ }
+
+ return "
+
+ |
+ ".$obj->getName()." |
+
+ ";
+ }
+
+ function ach_render_obj_value(&$obj) {
+ $html = "";
+ if($obj->isdone()) {
+ $col = "#71BE02";
+ }
+ else {
+ $col = "#999999";
+ }
+ $html .= "';
- }
-
- function ach_render_box_pending($name,$content) {
- return '
-
- |
- |
- |
-
-
- |
-
-
-
- |
- '.$name.' |
-
- 50
- |
-
-
- 10 | | Equip a full set of at least quality 50 jewels | 03.01.2012 | 10 | | Equip a full set of at least quality 100 jewels | 03.01.2012 | 10 | | Equip a full set of at least quality 150 jewels | 03.01.2012 | 10 | | Equip a full set of at least quality 200 jewels | 03.01.2012 | 10 | | Equip a full set of at least quality 250 jewels | 03.01.2012 |
|
-
-
- |
- |
-
-
- |
- |
- |
-
- ';
- }
-
- function ach_render_obj_list($list) {
- //group
- //columnize
- //draw
- }
-
- function ach_render_obj_meta($obj) {
-
- }
-
- function ach_render_obj_simple($obj) {
- return $obj->getName();
- }
-
- function ach_render_obj_value($obj) {
-
- }
function ach_render_tiebar($cult = "neutral", $civ = "neutral") {
}
- function ach_render_menu(&$menu) {
- $html = "";
+ function ach_render_menu(&$menu,$sub = 0) {
+ $html = "";
$sz = $menu->getSize();
for($i=0;$i<$sz;$i++) {
$curr = $menu->getChild($i);
- $html .= "".ach_render_menu($curr)." ";
+ $html .= "
+ ".ach_render_menu($curr,($sub+4))." ";
}
return $html;
@@ -109,12 +47,14 @@
$tmp = $cat->getDone();
$sz = sizeof($tmp);
for($i=0;$i<$sz;$i++) {
+ #echo "A";
$html .= ach_render_achievement_done($cat->getChild($tmp[$i]));
}
- $tmp = $cat->getDone();
+ $tmp = $cat->getOpen();
$sz = sizeof($tmp);
for($i=0;$i<$sz;$i++) {
+ #echo "B";
$html .= ach_render_achievement_open($cat->getChild($tmp[$i]));
}
@@ -122,7 +62,38 @@
}
function ach_render_achievement_done(&$ach) {
+ $html = "";
+ $html .= '
+
+ |
+ |
+ |
+
+
+ |
+
+
+
+ |
+ '.$ach->getName().' |
+
+ '.$ach->getValueDone().'
+ |
+ ';
+ $html .= ach_render_perk_done($ach);
+ $html .= ' |
+ |
+ |
+
+
+ |
+ |
+ |
+
+ ';
+
+ return $html;
}
function ach_render_achievement_open(&$ach) {
@@ -137,16 +108,16 @@
|
-
+
- |
- '.$ach->getName().' |
-
- '.$ach->getValue().'
+ | |
+ '.$ach->getName().' |
+
+ '.$ach->getValueOpen().'
|
- ';
- $html .= ach_render_perk_open($ach->getOpen());
- $html .= '
+ ';
+ $html .= ach_render_perk_open($ach);
+ $html .= ' |
|
|
@@ -160,28 +131,155 @@
return $html;
}
- function ach_render_perk_open(&$perk_list) {
+ function ach_render_perk_open(&$ach) {
+ #echo var_export($perk_list,true);
$html = "";
- $perk = $perk_list[0];
+ $perk_list = $ach->getOpen();
- $html .= $perk->getName()." ";
- $html .= ach_render_obj_list($perk->getChildren());
+ $perk = $ach->getChild($perk_list[0]);
+
+ $html .= "".$perk->getName()."";
+ if($perk->objDrawable()) {
+ $html .= " ".ach_render_obj_list($perk->getChildren());
+ }
return $html;
}
- function ach_render_perk_done() {
+ function ach_render_perk_done(&$ach) {
+ $html = "";
+
+ $perk_list = $ach->getDone();
+
+ foreach($perk_list as $elem) {
+ $perk = $ach->getChild($elem);
+ $html .= "".$perk->getName()." ( ".date('d.m.Y',$perk->getDone())." ) ".$perk->getValue()." ";
+ }
+ /*if($perk->objDrawable()) {
+ $html .= " ".ach_render_obj_list($perk->getChildren());
+ }*/
+ return $html;
}
function ach_render_obj_list(&$obj) {
- $html = "";
+ $html = "";
+
+ $i = 0;
+ $skip = false;
foreach($obj as $elem) {
- $html .= "-".$elem->getName()." ";
+ if(($i%2) == 0) {
+ $html .= "";
+ }
+
+ switch($elem->getDisplay()) {
+ case "meta":
+ $html .= "".ach_render_obj_meta($elem)." | ";
+ break;
+ case "value":
+ if(($i%2) == 1) {
+ $html .= " ";
+ }
+ $html .= "".ach_render_obj_value($elem)." | ";
+ $i++;
+ break;
+ case "simple":
+ $html .= "".ach_render_obj_simple($elem)." | ";
+ break;
+ case "hidden":
+ default:
+ //do nothing
+ $skip = true;
+ break;
+ }
+
+ if(($i%2) == 1) {
+ $html .= " ";
+ }
+
+
+ if(!$skip) {
+ $i++;
+ }
+ $skip = false;
+ }
+
+ if(($i%2) == 1) {
+ $html .= "";
}
+ $html .= " ";
+
+ return $html;
+ }
+
+ function ach_render_obj_simple(&$obj) {
+ $html = "";
+ if($obj->isdone()) {
+ $html .= " ";
+ }
+ else {
+ $html .= " ";
+ }
+
+ $html .= $obj->getName()."";
+
+ return $html;
+ }
+
+ function ach_render_obj_meta(&$obj) {
+ $html = "";
+ if($obj->isdone()) {
+ $col = "#71BE02";
+ $grey = "";
+ }
+ else {
+ $col = "#999999";
+ $grey = "grey/";
+ }
+
+ return "
+
+ |
+ ".$obj->getName()." |
+
+ ";
+ }
+
+ function ach_render_obj_value(&$obj) {
+ $html = "";
+ if($obj->isdone()) {
+ $col = "#71BE02";
+ }
+ else {
+ $col = "#999999";
+ }
+ $html .= "".$obj->getName()." ";
+
+ $val = $obj->getValue();
+ $prog = $obj->getProgress();
+
+ $width = 350;
+ $left = floor($width*(100*($prog/$val))/100);
+
+ $html .= "
+
+
+ ";
+ if(($prog/$val) > 0.85) {
+ $html .= " ".$prog." / ".$val." ";
+ }
+ $html .= " |
+ ";
+ if(($prog/$val) <= 0.85) {
+ $html .= " ".$prog." / ".$val." ";
+ }
+ $html .= " |
+
+ ";
+
return $html;
}
?>
\ No newline at end of file
diff --git a/code/web/app/app_achievements/index.php b/code/web/app/app_achievements/index.php
index d4a9d92a8..5287f2275 100644
--- a/code/web/app/app_achievements/index.php
+++ b/code/web/app/app_achievements/index.php
@@ -1,14 +1,17 @@
setDbDefs('test', array('id' => SQL_DEF_INT, 'num_access' => SQL_DEF_INT));
@@ -37,29 +46,30 @@ else
// Content
$c = _t('access', $num_access['num_access']).' ';*/
-$c = var_export($user,true);
+#$c = var_export($user,true);
-$c .= "
+$c = "
- ";
+ | ";
+ $_REQUEST['mid'] = 1;
$menu = new AchMenu($_REQUEST['mid'],$user['lang']);
$c .= ach_render_menu($menu);
-$c .= " |
- ";
+$c .= " |
+ ";
/*for($i=0;$i<15;$i++) {
$c .= ach_render_box_done("Bejeweled");
}*/
-if($menu->isSelected()) {
- $cat = new AchCategory($menu->getCat(),$user['lang']);
-}
-else {
- $cat = new AchSummary(12,$user['lang']);
-}
+#if($menu->isSelected()) {
+ $cat = new AchCategory($menu->getCat(),1,$user['lang']);
+#}
+#else {
+# $cat = new AchSummary(12,$user['lang']);
+#}
$c .= ach_render_category($cat);
diff --git a/code/web/app/app_achievements/pic/check.png b/code/web/app/app_achievements/pic/check.png
new file mode 100644
index 000000000..c40307f2e
Binary files /dev/null and b/code/web/app/app_achievements/pic/check.png differ
diff --git a/code/web/app/app_achievements/pic/icon/grey/test.png b/code/web/app/app_achievements/pic/icon/grey/test.png
new file mode 100644
index 000000000..f0feccd76
Binary files /dev/null and b/code/web/app/app_achievements/pic/icon/grey/test.png differ
diff --git a/code/web/app/app_achievements/pic/icon/test.png b/code/web/app/app_achievements/pic/icon/test.png
new file mode 100644
index 000000000..9e0e8f14a
Binary files /dev/null and b/code/web/app/app_achievements/pic/icon/test.png differ
diff --git a/code/web/app/app_achievements/pic/menu/test.png b/code/web/app/app_achievements/pic/menu/test.png
new file mode 100644
index 000000000..49154892f
Binary files /dev/null and b/code/web/app/app_achievements/pic/menu/test.png differ
diff --git a/code/web/app/app_achievements/pic/pending.png b/code/web/app/app_achievements/pic/pending.png
new file mode 100644
index 000000000..451521d93
Binary files /dev/null and b/code/web/app/app_achievements/pic/pending.png differ
diff --git a/code/web/app/app_achievements/pic/yubo_done.png b/code/web/app/app_achievements/pic/yubo_done.png
index ff47009c9..8707db016 100644
Binary files a/code/web/app/app_achievements/pic/yubo_done.png and b/code/web/app/app_achievements/pic/yubo_done.png differ
diff --git a/code/web/app/app_achievements/pic/yubo_pending.png b/code/web/app/app_achievements/pic/yubo_pending.png
index 3cbcb656e..df66d1248 100644
Binary files a/code/web/app/app_achievements/pic/yubo_pending.png and b/code/web/app/app_achievements/pic/yubo_pending.png differ
| |