Changeset 27286
- Timestamp:
- 01/28/10 20:52:10 (3 years ago)
- Files:
-
- plugins/diemPlugin/trunk/dmAdminPlugin/config/dm/assets.yml (modified) (1 diff)
- plugins/diemPlugin/trunk/dmAdminPlugin/data/generator/dmAdminDoctrineModule/dmAdmin/template/templates/_form.php (modified) (1 diff)
- plugins/diemPlugin/trunk/dmAdminPlugin/lib/filter/dmAdminInitFilter.php (modified) (2 diffs)
- plugins/diemPlugin/trunk/dmAdminPlugin/lib/response/asset/dmAdminAssetConfig.php (modified) (1 diff)
- plugins/diemPlugin/trunk/dmAdminPlugin/lib/view/html/layout/dmAdminLayoutHelper.php (modified) (1 diff)
- plugins/diemPlugin/trunk/dmAdminPlugin/modules/dmInterface/templates/_toolBar.php (modified) (3 diffs)
- plugins/diemPlugin/trunk/dmAdminPlugin/web/css/bars.css (modified) (3 diffs)
- plugins/diemPlugin/trunk/dmAdminPlugin/web/css/flash.css (modified) (2 diffs)
- plugins/diemPlugin/trunk/dmAdminPlugin/web/js/dmAdminCtrl.js (modified) (1 diff)
- plugins/diemPlugin/trunk/dmAdminPlugin/web/js/dmAdminPing.js (added)
- plugins/diemPlugin/trunk/dmCorePlugin/config/dm/assets.yml (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/config/dm/config.yml (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/config/doctrine/schema.yml (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/data/dm/i18n/en_fr.yml (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/lib/filter/dmFilter.php (modified) (2 diffs)
- plugins/diemPlugin/trunk/dmCorePlugin/lib/filter/dmInitFilter.php (modified) (2 diffs)
- plugins/diemPlugin/trunk/dmCorePlugin/lib/model/doctrine/PluginDmLock.class.php (added)
- plugins/diemPlugin/trunk/dmCorePlugin/lib/model/doctrine/PluginDmLockTable.class.php (added)
- plugins/diemPlugin/trunk/dmCorePlugin/lib/view/html/layout/dmCoreLayoutHelper.php (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/modules/dmCore/config/security.yml (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/modules/dmCore/lib/BasedmCoreActions.class.php (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/web/css/mediaBar.css (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/web/css/pageBar.css (modified) (1 diff)
- plugins/diemPlugin/trunk/dmCorePlugin/web/js/dmCoreEditCtrl.js (modified) (2 diffs)
- plugins/diemPlugin/trunk/dmCorePlugin/web/js/dmCorePing.js (added)
- plugins/diemPlugin/trunk/dmFrontPlugin/lib/filter/dmFrontInitFilter.php (modified) (1 diff)
- plugins/diemPlugin/trunk/dmFrontPlugin/web/css/toolBar.css (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
plugins/diemPlugin/trunk/dmAdminPlugin/config/dm/assets.yml
r27114 r27286 22 22 sitemap: dmAdminSitemap 23 23 diagram: dmAdminDiagram 24 ping: dmAdminPing 24 25 25 26 css: plugins/diemPlugin/trunk/dmAdminPlugin/data/generator/dmAdminDoctrineModule/dmAdmin/template/templates/_form.php
r23658 r27286 3 3 4 4 <div class="sf_admin_form"> 5 6 <div class="dm_active_locks"></div> 5 7 6 8 [?php $formActions = get_partial('<?php echo $this->getModuleName() ?>/form_action_bar', array('<?php echo $this->getSingularName() ?>' => $<?php echo $this->getSingularName() ?>, 'form' => $form, 'configuration' => $configuration, 'helper' => $helper, 'nearRecords' => $nearRecords)); ?] plugins/diemPlugin/trunk/dmAdminPlugin/lib/filter/dmAdminInitFilter.php
r26905 r27286 17 17 $this->loadAssetConfig(); 18 18 19 $this->updateLock(); 20 19 21 $filterChain->execute(); 20 21 $response = $this->context->getResponse();22 22 23 23 // If response has no title, generate one with the H1 24 if ($ response->isHtmlForHuman() && !$response->getTitle())24 if ($this->response->isHtmlForHuman() && !$this->response->getTitle()) 25 25 { 26 preg_match('|<h1[^>]*>(.*)</h1>|iuUx', $ response->getContent(), $matches);26 preg_match('|<h1[^>]*>(.*)</h1>|iuUx', $this->response->getContent(), $matches); 27 27 28 28 if (isset($matches[1])) … … 30 30 $title = 'Admin : '.strip_tags($matches[1]).' - '.dmConfig::get('site_name'); 31 31 32 $ response->setContent(str_replace('<title></title>', '<title>'.$title.'</title>', $response->getContent()));32 $this->response->setContent(str_replace('<title></title>', '<title>'.$title.'</title>', $this->response->getContent())); 33 33 } 34 34 } plugins/diemPlugin/trunk/dmAdminPlugin/lib/response/asset/dmAdminAssetConfig.php
r26729 r27286 50 50 'core.pageBar', 51 51 'core.mediaBar', 52 'core.ping', 52 53 'admin.ctrl', 53 54 'admin.toolBar', 54 55 'admin.pageBar', 55 'admin.mediaBar' 56 'admin.mediaBar', 57 'admin.ping' 56 58 ); 57 59 } plugins/diemPlugin/trunk/dmAdminPlugin/lib/view/html/layout/dmAdminLayoutHelper.php
r25028 r27286 49 49 } 50 50 51 protected function getJavascriptConfig() 52 { 53 $config = parent::getJavascriptConfig(); 54 55 $config['record_id'] = $this->serviceContainer->getService('request')->getParameter('pk', 0); 56 57 return $config; 58 } 51 59 52 60 } plugins/diemPlugin/trunk/dmAdminPlugin/modules/dmInterface/templates/_toolBar.php
r26137 r27286 5 5 echo £link('dmAuth/signout')->textTitle($sf_user->getUsername().' : '.__('Logout'))->set('.widget16.s16block.s16_signout'); 6 6 7 // echo £link()->textTitle(__('Home'))->set('.widget16.s16block.s16_home');8 9 7 if ($sf_user->can('clear_cache')) 10 8 { … … 12 10 } 13 11 14 // echo £link('dmCodeEditor/index')->textTitle(__('Code Editor'))->set('.widget16.s16block.s16_code_editor');15 16 12 echo £('div.dm_menu.widget16', $menu->render()); 17 13 … … 31 27 32 28 echo £link('app:front')->textTitle(__('Go to site'))->set('.widget16.ml10'); 29 30 echo £('div.dm_active_users'); 33 31 34 32 if (sfConfig::get('sf_web_debug')) plugins/diemPlugin/trunk/dmAdminPlugin/web/css/bars.css
r24212 r27286 2 2 top: 0; 3 3 -moz-box-shadow: 0 4px 4px #888; 4 -webkit-box-shadow: 0 4px 4px #888; 4 5 } 5 6 … … 66 67 background: #fff; 67 68 -moz-box-shadow: 4px 4px 4px #888; 69 -webkit-box-shadow: 4px 4px 4px #888; 68 70 } 69 71 … … 134 136 width: 100%; 135 137 } 138 139 #dm_tool_bar div.dm_active_users { 140 margin-left: 5px; 141 } 142 143 #dm_tool_bar div.dm_active_users span { 144 -moz-border-radius: 4px; 145 -webkit-border-radius: 4px; 146 background: #FFFFFF; 147 color: #000000; 148 float: left; 149 margin-top: 5px; 150 margin-left: 5px; 151 opacity: 0.7; 152 padding: 2px 5px; 153 } plugins/diemPlugin/trunk/dmAdminPlugin/web/css/flash.css
r22786 r27286 1 #flash {1 #flash, div.dm_active_locks { 2 2 margin-bottom: 5px; 3 3 cursor: pointer; 4 4 } 5 5 6 #flash li.flash { 6 #flash li.flash, 7 div.dm_active_locks span { 7 8 border: 1px solid; 8 9 padding: 5px; 9 10 margin-top: 5px; 10 11 color: #333; 12 -moz-border-radius: 4px; 13 -webkit-border-radius: 4px; 14 display: block; 11 15 } 12 16 … … 16 20 } 17 21 18 #flash li.alert { 22 #flash li.alert, 23 div.dm_active_locks span { 19 24 background: #F8F2B7 url(../images/flash/yellow.gif) repeat-x top left; 20 25 border-color: #DBD6A1; plugins/diemPlugin/trunk/dmAdminPlugin/web/js/dmAdminCtrl.js
r27081 r27286 31 31 32 32 this.checkVersion(); 33 34 this.launchPing(); 33 35 }, 34 36 plugins/diemPlugin/trunk/dmCorePlugin/config/dm/assets.yml
r27247 r27286 15 15 auth: dmCoreAuth 16 16 codeArea: dmCoreCodeArea 17 ping: dmCorePing 17 18 18 19 lib: plugins/diemPlugin/trunk/dmCorePlugin/config/dm/config.yml
r27253 r27286 51 51 remember_cookie_name: # defaults to "dm_remember_%project_name%" 52 52 remember_key_expiration_age: # defaults to 15 days 53 active_user_timeout: 10 # time in seconds to consider a user is no more active 53 54 54 55 ###### dm internal config ###### plugins/diemPlugin/trunk/dmCorePlugin/config/doctrine/schema.yml
r26078 r27286 169 169 description: { type: string(60000) } 170 170 171 DmLock: 172 columns: 173 user_id: { type: integer, notnull: true } 174 user_name: { type: string(255), notnull: true } 175 module: { type: string(127), notnull: true } 176 action: { type: string(127), notnull: true } 177 record_id: { type: integer, unsigned: true, notnull: true, default: 0 } 178 time: { type: integer, notnull: true } 179 app: { type: string(127), notnull: true } 180 url: { type: string(255), notnull: true } 181 culture: { type: string(15), notnull: true } 182 indexes: 183 dmLockIndex: 184 fields: [ user_id, module, action, record_id ] 185 type: unique 186 relations: 187 User: 188 class: DmUser 189 local: user_id 190 onDelete: CASCADE 191 171 192 # SEO SCHEMA 172 193 plugins/diemPlugin/trunk/dmCorePlugin/data/dm/i18n/en_fr.yml
r27269 r27286 402 402 "Click to edit": "Cliquer pour modifier" 403 403 "Code generation": "Génération du code" 404 "%user% is browsing this page, you should not modify it now.": "%user% est déjà sur cette page, vous ne devriez pas la modifier maintenant." plugins/diemPlugin/trunk/dmCorePlugin/lib/filter/dmFilter.php
r26906 r27286 4 4 { 5 5 protected 6 $request; 6 $request, 7 $response, 8 $user; 7 9 8 10 /** … … 17 19 { 18 20 $this->request = $context->getRequest(); 21 $this->response = $context->getResponse(); 22 $this->user = $context->getUser(); 19 23 20 24 return parent::initialize($context, $parameters); plugins/diemPlugin/trunk/dmCorePlugin/lib/filter/dmInitFilter.php
r27135 r27286 4 4 { 5 5 6 protected function updateLock() 7 { 8 if(class_exists('DmLock') && $this->user->can('admin') && $this->response->isHtmlForHuman()) 9 { 10 dmDb::table('DmLock')->update(array( 11 'user_id' => $this->user->getUserId(), 12 'user_name' => $this->user->getUser()->get('username'), 13 'time' => $_SERVER['REQUEST_TIME'], 14 'app' => sfConfig::get('sf_app'), 15 'module' => $this->request->getParameter('module'), 16 'action' => $this->request->getParameter('action'), 17 'record_id' => $this->request->getParameter('pk', 0), 18 'culture' => $this->user->getCulture(), 19 'url' => str_replace($this->request->getAbsoluteUrlRoot(), '', $this->request->getUri()) 20 )); 21 } 22 } 23 6 24 protected function loadAssetConfig() 7 25 { 8 if ($this-> context->getResponse()->isHtmlForHuman())26 if ($this->response->isHtmlForHuman()) 9 27 { 10 $this-> context->getResponse()->setAssetConfig($this->context->get('asset_config'));28 $this->response->setAssetConfig($this->context->get('asset_config')); 11 29 } 12 30 } … … 28 46 $appUrlKey = implode('-', array(sfConfig::get('sf_app'), sfConfig::get('sf_environment'))); 29 47 30 $appUrl = $this->request->getUriPrefix().$this-> context->getRequest()->getScriptName();48 $appUrl = $this->request->getUriPrefix().$this->request->getScriptName(); 31 49 32 50 if (!isset($knownBaseUrls[$appUrlKey]) || $knownBaseUrls[$appUrlKey] !== $appUrl) plugins/diemPlugin/trunk/dmCorePlugin/lib/view/html/layout/dmCoreLayoutHelper.php
r26363 r27286 218 218 'debug' => sfConfig::get('sf_debug') ? true : false, 219 219 'culture' => $this->serviceContainer->getParameter('user.culture'), 220 'module' => $this->serviceContainer->getParameter('controller.module') 220 'module' => $this->serviceContainer->getParameter('controller.module'), 221 'action' => $this->serviceContainer->getParameter('controller.action') 221 222 )); 222 223 } plugins/diemPlugin/trunk/dmCorePlugin/modules/dmCore/config/security.yml
r24510 r27286 14 14 is_secure: true 15 15 credential: admin 16 17 ping: 18 is_secure: true 19 credential: admin plugins/diemPlugin/trunk/dmCorePlugin/modules/dmCore/lib/BasedmCoreActions.class.php
r27269 r27286 3 3 class BasedmCoreActions extends dmBaseActions 4 4 { 5 6 public function executePing(dmWebRequest $request) 7 { 8 $recordId = $this->request->getParameter('record_id', 0); 9 10 $data = array( 11 'user_id' => $this->getUser()->getUserId(), 12 'time' => $_SERVER['REQUEST_TIME'], 13 'app' => sfConfig::get('sf_app'), 14 'module' => $this->request->getParameter('sf_module'), 15 'action' => $this->request->getParameter('sf_action'), 16 'record_id' => $recordId, 17 'culture' => $this->getUser()->getCulture() 18 ); 19 20 dmDb::table('DmLock')->ping($data); 21 22 $users = dmDb::table('DmLock')->getUserNames(); 23 $locks = $recordId ? dmDb::table('DmLock')->getLocks($data) : array(); 24 25 if(!empty($locks)) 26 { 27 foreach($locks as $index => $lock) 28 { 29 $locks[$index] = $this->getService('i18n')->__('%user% is browsing this page, you should not modify it now.', array( 30 '%user%' => '<strong>'.$lock.'</strong>' 31 )); 32 } 33 } 34 35 return $this->renderJson(array( 36 'users' => implode('|', $users), 37 'locks' => implode('|', $locks) 38 )); 39 } 40 5 41 public function executeThumbnail(dmWebRequest $request) 6 42 { plugins/diemPlugin/trunk/dmCorePlugin/web/css/mediaBar.css
r25429 r27286 22 22 font-size: 11px; 23 23 -moz-box-shadow: -3px 0 4px #888; 24 -webkit-box-shadow: -3px 0 4px #888; 24 25 } 25 26 plugins/diemPlugin/trunk/dmCorePlugin/web/css/pageBar.css
r24212 r27286 22 22 font-size: 11px; 23 23 -moz-box-shadow: 3px 0 4px #888; 24 -webkit-box-shadow: 3px 0 4px #888; 24 25 } 25 26 plugins/diemPlugin/trunk/dmCorePlugin/web/js/dmCoreEditCtrl.js
r27114 r27286 3 3 4 4 $.dm.coreEditCtrl = $.extend($.dm.coreCtrl, { 5 6 launchPing: function() 7 { 8 $.dm.ping.init(this.options); 9 }, 5 10 6 11 liveEvents: function() … … 13 18 return false; 14 19 } 20 21 return true; 15 22 }); 16 23 plugins/diemPlugin/trunk/dmFrontPlugin/lib/filter/dmFrontInitFilter.php
r26905 r27286 38 38 if (($page = $this->context->getPage()) && ($h1 = $page->_getI18n('h1'))) 39 39 { 40 $this-> context->getResponse()->setContent(preg_replace(40 $this->response->setContent(preg_replace( 41 41 '|<h1(.*)>.*</h1>|iuU', 42 42 '<h1$1>'.$h1.'</h1>', 43 $this-> context->getResponse()->getContent()43 $this->response->getContent() 44 44 )); 45 45 } plugins/diemPlugin/trunk/dmFrontPlugin/web/css/toolBar.css
r27125 r27286 81 81 background: #fff; 82 82 -moz-box-shadow: 4px -4px 4px #888; 83 -webkit-box-shadow: 4px -4px 4px #888; 83 84 } 84 85