r4182 commitUpdateVSTRules(): change to generate "soft" error
authorDenis Ovsienko <infrastation@yandex.ru>
Tue, 1 Feb 2011 13:07:04 +0000 (13:07 +0000)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 1 Feb 2011 13:07:04 +0000 (13:07 +0000)
trigger_8021q_configured(): new function to hide 802.1Q order tabs until necessary records are in place
cloneVSTRule(): rename to cloneVST() and fix error handling

inc/database.php
inc/navigation.php
inc/ophandlers.php
inc/triggers.php

index e6ff936..4cf431b 100644 (file)
@@ -4241,7 +4241,7 @@ function commitUpdateVSTRules ($vst_id, $mutex_rev, $rules)
        $vst = $result->fetch (PDO::FETCH_ASSOC);
        unset ($result);
        if ($vst['mutex_rev'] != $mutex_rev)
-               throw new InvalidArgException ('mutex_rev', $mutex_rev, "already saved by ${vst['saved_by']}");
+               throw new InvalidRequestArgException ('mutex_rev', $mutex_rev, "already saved by ${vst['saved_by']}");
        usePreparedDeleteBlade ('VLANSTRule', array ('vst_id' => $vst_id));
        foreach ($rules as $rule)
                usePreparedInsertBlade ('VLANSTRule', array_merge (array ('vst_id' => $vst_id), $rule));
index af4e62c..05f2b36 100644 (file)
@@ -586,6 +586,7 @@ $page['vlandomain']['bypass_type'] = 'uint';
 $tab['vlandomain']['default'] = 'View';
 $tab['vlandomain']['vlanlist'] = 'VLAN list';
 $tab['vlandomain']['8021qorder'] = '802.1Q orders';
+$trigger['vlandomain']['8021qorder'] = 'trigger_8021q_configured';
 $tabhandler['vlandomain']['default'] = 'renderVLANDomain';
 $tabhandler['vlandomain']['8021qorder'] = 'render8021QOrderForm';
 $tabhandler['vlandomain']['vlanlist'] = 'renderVLANDomainVLANList';
@@ -618,10 +619,11 @@ $tab['vst']['default'] = 'View';
 $tab['vst']['editrules'] = 'Edit';
 $tab['vst']['8021qorder'] = '802.1Q orders';
 $trigger['vst']['editrules'] = 'trigger_vst_editrules';
+$trigger['vst']['8021qorder'] = 'trigger_8021q_configured';
 $tabhandler['vst']['default'] = 'renderVST';
 $tabhandler['vst']['editrules'] = 'renderVSTRulesEditor';
 $tabhandler['vst']['8021qorder'] = 'render8021QOrderForm';
-$ophandler['vst']['editrules']['clone'] = 'cloneVSTRule';
+$ophandler['vst']['editrules']['clone'] = 'cloneVST';
 $ophandler['vst']['editrules']['upd'] = 'updVSTRule';
 $ophandler['vst']['8021qorder']['add'] = 'add8021QOrder';
 $ophandler['vst']['8021qorder']['del'] = 'del8021QOrder';
index f7ffec1..0b10eeb 100644 (file)
@@ -2668,27 +2668,15 @@ function delVLANSwitchTemplate()
        return buildRedirectURL (__FUNCTION__, $result ? 'OK' : 'ERR');
 }
 
-$msgcode['cloneVSTRule']['OK'] = 48;
-$msgcode['cloneVSTRule']['ERR'] = 179;
-function cloneVSTRule()
+$msgcode['cloneVST']['OK'] = 48;
+$msgcode['cloneVST']['ERR'] = 179;
+function cloneVST()
 {
-       global $dbxlink;
-       $message = '';
        assertUIntArg ('mutex_rev', TRUE);
-       $dst_vst = getVLANSwitchTemplate ($_REQUEST['vst_id']);
-       if ($dst_vst['mutex_rev'] != $_REQUEST['mutex_rev'])
-               $message = "User ${dst_vst['saved_by']} saved this template after you started to edit it. Please concern differencies";
-       else
-       {
-               assertUIntArg ('from_id');
-               $src_vst = getVLANSwitchTemplate ($_REQUEST['from_id']);
-               if (! commitUpdateVSTRules ($_REQUEST['vst_id'], $_REQUEST['mutex_rev'], $src_vst['rules']))
-                       $message = 'DB error';
-       }
-       $result = !(BOOL) $message;
-       if ($result)
-               $message = 'Supplement succeeded';
-       return buildWideRedirectURL (array (array ('code' => $result ? 'success' : 'error', 'message' => $message)));
+       assertUIntArg ('from_id');
+       $src_vst = getVLANSwitchTemplate ($_REQUEST['from_id']);
+       commitUpdateVSTRules (getBypassValue(), $_REQUEST['mutex_rev'], $src_vst['rules']);
+       return buildRedirectURL (__FUNCTION__, 'OK');
 }
 
 $msgcode['updVSTRule']['OK'] = 43;
index 7f81e67..0577077 100644 (file)
@@ -236,6 +236,13 @@ function trigger_object_8021qorder ()
        return '';
 }
 
+function trigger_8021q_configured ()
+{
+       if (!count (getVLANDomainOptions()) or !count (getVSTOptions()))
+               return '';
+       return 'std';
+}
+
 // implement similar logic for IPv4 networks
 function trigger_ipv4net_vlanconfig ()
 {