Index: branches/5.2.x/units/currencies/currencies_event_handler.php =================================================================== diff -u -N -r14702 -r14755 --- branches/5.2.x/units/currencies/currencies_event_handler.php (.../currencies_event_handler.php) (revision 14702) +++ branches/5.2.x/units/currencies/currencies_event_handler.php (.../currencies_event_handler.php) (revision 14755) @@ -1,6 +1,6 @@ Array('self' => 'add|edit'), - 'OnUpdateRates' => Array('self' => 'advanced:update_rate|add|edit'), - 'OnDisableUnused' => Array('self' => 'edit'), + // admin + 'OnUpdateRate' => Array('self' => 'add|edit'), + 'OnUpdateRates' => Array('self' => 'advanced:update_rate|add|edit'), + 'OnDisableUnused' => Array('self' => 'edit'), - // front - 'OnChangeCurrency' => Array('self' => true), - ); + // front + 'OnChangeCurrency' => Array('self' => true), + 'OnItemBuild' => Array('self' => true), + ); + $this->permMapping = array_merge($this->permMapping, $permissions); } /** + * Returns ID of current item to be edited + * by checking ID passed in get/post as prefix_id + * or by looking at first from selected ids, stored. + * Returned id is also stored in Session in case + * it was explicitly passed as get/post + * + * @param kEvent $event + * @return int + */ + function getPassedID(&$event) + { + if ( $event->Special == 'current' ) { + return Array ('ISO' => $this->Application->RecallVar('curr_iso')); + } + + return parent::getPassedID($event); + } + + /** * Enter description here... * * @param kEvent $event @@ -47,6 +69,8 @@ } $object =& $event->getObject(); + /* @var $object kDBItem */ + $object->SetDBField('IsPrimary', 1); $object->Update(); } @@ -95,18 +119,18 @@ protected function SetCustomQuery(&$event) { $object =& $event->getObject(); + /* @var $object kDBList */ - if ($event->Special == 'active') { - $object =& $event->getObject(); + if ( $event->Special == 'active' ) { $object->addFilter('status_filter', '%1$s.Status = 1'); } - if (!$this->Application->isAdminUser) { - $object->addFilter('status_filter', $object->TableName.'.Status = 1'); + if ( !$this->Application->isAdminUser ) { + $object->addFilter('status_filter', $object->TableName . '.Status = 1'); } // site domain currency picker - if ($event->Special == 'selected' || $event->Special == 'available') { + if ( $event->Special == 'selected' || $event->Special == 'available' ) { $edit_picker_helper =& $this->Application->recallObject('EditPickerHelper'); /* @var $edit_picker_helper EditPickerHelper */ @@ -117,7 +141,7 @@ // apply domain-based currency filtering $currencies = $this->Application->siteDomainField('Currencies'); - if (strlen($currencies)) { + if ( strlen($currencies) ) { $currencies = explode('|', substr($currencies, 1, -1)); $object->addFilter('domain_filter', '%1$s.CurrencyId IN (' . implode(',', $currencies) . ')'); } @@ -238,7 +262,14 @@ } } - function OnChangeCurrency(&$event) + /** + * Allows to change currency to given one + * + * @param kEvent $event + * @return void + * @access protected + */ + protected function OnChangeCurrency(&$event) { $currency_iso = $this->Application->GetVar('curr_iso'); $available_currencies = $this->Application->siteDomainField('Currencies'); @@ -251,6 +282,14 @@ } $this->Application->StoreVar('curr_iso', $currency_iso); + + $passed = explode(',', $this->Application->GetVar('passed')); + $prefix_index = array_search($event->getPrefixSpecial(), $passed); + + if ( $prefix_index !== false ) { + unset($passed[$prefix_index]); + $this->Application->SetVar('passed', implode(',', $passed)); + } } /** Index: branches/5.2.x/units/currencies/currencies_tag_processor.php =================================================================== diff -u -N -r14702 -r14755 --- branches/5.2.x/units/currencies/currencies_tag_processor.php (.../currencies_tag_processor.php) (revision 14702) +++ branches/5.2.x/units/currencies/currencies_tag_processor.php (.../currencies_tag_processor.php) (revision 14755) @@ -1,6 +1,6 @@ PrintList2($params); } + function CurrencyLink($params) + { + $object =& $this->getObject($params); + /* @var $object kDBItem */ + + $params['pass'] = 'm,curr'; + $params['curr_event'] = 'OnChangeCurrency'; + $params['curr_iso'] = $object->GetDBField('ISO'); + + return $this->Application->ProcessParsedTag('m', 'Link', $params); + } + function SelectedCurrency($params) { $object =& $this->Application->recallObject($this->getPrefixSpecial()); @@ -69,13 +81,19 @@ function PrimaryCurrencyISO($params) { - $sql = 'SELECT ISO FROM '.$this->Application->getUnitOption($this->Prefix, 'TableName').' WHERE IsPrimary = 1'; + $sql = 'SELECT ISO + FROM ' . $this->Application->getUnitOption($this->Prefix, 'TableName') . ' + WHERE IsPrimary = 1'; + return $this->Conn->GetOne($sql); } function PrimaryCurrencyName($params) { - $sql = 'SELECT Name FROM '.$this->Application->getUnitOption($this->Prefix, 'TableName').' WHERE IsPrimary = 1'; + $sql = 'SELECT Name + FROM ' . $this->Application->getUnitOption($this->Prefix, 'TableName') . ' + WHERE IsPrimary = 1'; + return $this->Application->Phrase( $this->Conn->GetOne($sql) ); } } \ No newline at end of file