$cms_message = '';
$content = array('success' => false);
switch ($action) {
    case 'save':
        $all_languages = CMS_languagesCatalog::getAllLanguages($codename);
        $parentId = sensitiveIO::request('parentId', 'sensitiveIO::isPositiveInteger');
        $icon = sensitiveIO::request('icon');
        $defaultLabel = sensitiveIO::request('label_' . $module->getDefaultLanguageCodename());
        // Current category object to manipulate
        $item = new CMS_moduleCategory($categoryId);
        //check protected status
        $protected = sensitiveIO::request('protected') ? true : false;
        if (!$item->isProtected() || !$protected && $cms_user->hasAdminClearance(CLEARANCE_ADMINISTRATION_EDITVALIDATEALL)) {
            $item->setAttribute('language', $cms_language);
            $item->setAttribute('moduleCodename', $codename);
            $item->setProtected($protected);
            if (!$parentId) {
                $parentCategory = $item->getParent();
            } else {
                // Parent category
                $parentCategory = CMS_moduleCategories_catalog::getById($parentId);
            }
            $parentCategory->setAttribute('language', $cms_language);
            //check mandatory fields
            if (!$defaultLabel) {
                $cms_message .= $cms_language->getMessage(MESSAGE_FORM_ERROR_MANDATORY_FIELDS);
                break;
            } else {
                // If insertion, must be saved once added to its parent
                $newParentCategory = CMS_moduleCategories_catalog::getById($parentId);
                if (!$newParentCategory->hasError()) {