public function start($attributes = array()) { if (sfConfig::get('app_parser_skip_toolbar')) { $attributes['toolbar'] = false; $attributes['north'] = false; $attributes['west'] = false; } /** * TOOLBAR */ if (isset($attributes['toolbar']) && is_object($attributes['toolbar']) && get_class($attributes['toolbar']) == 'afExtjsToolbar') { $attributes['toolbar']->end(); } elseif ((!isset($attributes['toolbar']) || isset($attributes['toolbar']) && $attributes['toolbar'] != false) && afExtjs::getInstance()->isDesktop() == false) { sfProjectConfiguration::getActive()->loadHelpers(array('afExtjsToolbar')); } /** * NORTH PANEL */ if (isset($attributes['north']) && is_array($attributes['north'])) { $this->addPanel('north', $attributes['north']); } elseif (!isset($attributes['north']) || isset($attributes['north']) && $attributes['north'] != false) { $this->addPanel('north', array('id' => 'north_panel', 'region' => 'north', 'height' => '32', 'border' => false, 'bodyStyle' => 'background-color:#dfe8f6;')); } /** * WEST PANEL */ if (isset($attributes['west']) && is_array($attributes['west'])) { $this->addPanel('west', $attributes['west']); } elseif (!isset($attributes['west']) || isset($attributes['west']) && $attributes['west'] != false) { $logoScript = ""; if (class_exists('ConfigPeer')) { $avatarLogo = ConfigPeer::get("avatar_logo", false); } else { $avatarLogo = sfConfig::get('app_avatar_logo', false); } if ($avatarLogo && file_exists(sfConfig::get('sf_web_dir') . $avatarLogo)) { $imagesize = getimagesize(sfConfig::get('sf_web_dir') . $avatarLogo); $clickAction = 'onClick="var aboutWin = null;if(aboutWin = Ext.getCmp(\'about-window\')){aboutWin.show();aboutWin.center();}" style="cursor:pointer"'; $logo = '<div style="background-color:#d9e7f8;border-right:1px solid #99bbe8;border-left:1px solid #99bbe8;border-bottom:1px solid #99bbe8; padding:2px 0px 0px 0px; margin:0px;text-align:center;"><img id="avatar_image" ' . $clickAction . ' src="' . $avatarLogo . '"/></div>'; $logoScript = 'var logoDiv = Ext.DomHelper.insertBefore(comp.bwrap,{tag:"div",html:"' . addslashes($logo) . '"}); var resize = function(comp){ var body = comp.body, bodyHeight = body.getHeight(); body.setHeight(bodyHeight-' . $imagesize[1] . '-3); }; resize(comp); comp.on("bodyresize",function(comp,w,h){resize(comp);});'; } $attributes_temp = array('id' => 'west_panel', 'stateful' => true, 'stateEvents' => array('afterlayout'), 'getState' => $this->afExtjs->asMethod(array("parameters" => "", "source" => "return { activeItemIndex: this.items.findIndex('id',this.layout.activeItem.id) };")), 'stateId' => 'west_panel', 'region' => 'west', 'title' => 'Navigation', 'width' => '255', 'minWidth' => '255', 'split' => 'true', 'layoutConfig' => array('animate' => 'true'), 'collapsible' => 'true', 'layout' => 'accordion', 'listeners' => '{"beforerender": function(){var state=Ext.state.Manager.get("west_panel");if(!state){this.activeItem = this.findById("profile");}else{this.activeItem = state.activeItemIndex;}},"render":function(comp){' . $logoScript . '}}'); if (!isset($this->attributes['viewport']['west_panel'])) { $this->attributes['viewport']['west_panel'] = $attributes_temp; } else { $this->attributes['viewport']['west_panel'] = array_merge($attributes_temp, $this->attributes['viewport']['west_panel']); } unset($attributes_temp); } elseif (isset($attributes['west']) && $attributes['west'] == false) { $this->attributes['viewport']['west_panel'] = false; } parent::start($attributes); }