--- models/behaviors/sluggable.php.orig Tue Jun 17 10:38:04 2008 +++ models/behaviors/sluggable.php Thu Jan 08 02:47:45 2009 @@ -95,12 +95,18 @@ if ((!$this->__settings[$Model->alias]['real'] || $Model->hasField($this->__settings[$Model->alias]['slug'])) && ($this->__settings[$Model->alias]['overwrite'] || empty($Model->id))) { // Build label out of data in label fields, if available, or using a default slug otherwise - $label = ''; + // Serge Rodovnichenko: check if slug passed as parameter and, if so + // do not create a new one, just check for uniqness + if (!array_key_exists($this->__settings[$Model->alias]['slug'], $Model->data[$Model->alias]) || empty($Model->data[$Model->alias][$this->__settings[$Model->alias]['slug']])) { + $label = ''; - foreach($this->__settings[$Model->alias]['label'] as $field) { - if (!empty($Model->data[$Model->alias][$field])) { - $label .= ife(!empty($label), ' ', '') . $Model->data[$Model->alias][$field]; + foreach($this->__settings[$Model->alias]['label'] as $field) { + if (!empty($Model->data[$Model->alias][$field])) { + $label .= ife(!empty($label), ' ', '') . $Model->data[$Model->alias][$field]; + } } + } else { + $label = $Model->data[$Model->alias][$this->__settings[$Model->alias]['slug']]; } // Keep on going only if we've got something to slug