public function AllSteps()
    {
        $num = self::classNameNumber();
        if (!$num) {
            return;
        }
        $n = 1;
        $curr = self::getCurrentStep();
        if (!$curr) {
            $curr = 1;
        }
        if (!Controller::has_curr()) {
            return;
        }
        $c = Controller::curr();
        $class = str_replace($num, $n, get_called_class());
        $steps = new ArrayList();

        $baseAction = parent::FormAction();

        while (class_exists($class)) {
            $isCurrent = $isCompleted = false;
            $cssClass = $n == $curr ? 'current' : 'link';
            if ($n == 1) {
                $isCurrent = true;
                $cssClass .= ' first';
            }
            if ($class::isLastStep()) {
                $cssClass .= ' last';
            }
            if ($n < $curr) {
                $isCompleted = true;
                $cssClass .= ' completed';
            }
            $link = $baseAction . '/gotoStep/?step=' . $n;
            $steps->push(new ArrayData(array(
                'Title' => $class::getStepTitle(),
                'Number' => $n,
                'Link' => $link,
                'Class' => $cssClass,
                'IsCurrent' => $isCurrent,
                'IsCompleted' => $isCompleted,
            )));
            $n++;
            $class = str_replace(self::classNameNumber(), $n, get_called_class());
        }
        return $steps;
    }