Jump to content

Allow a client to edit a products custom field from productdetails page


whattheserver

Recommended Posts

I'm looking to basically allow editing of a custom field for a product.

I would like to essentially clone how the change password function works but with just one input field and when it saves it updates the custom field and runs a custom function.

I have a function and clientareacustombutton which opens a macaddy.tpl file with form input. It seems like the documentation and examples are scarse and missing vital example.


function from the module

function freeradius_ClientAreaCustomButtonArray() {
    $buttonarray = array(
     "Change MacAddress" => "changemac",
    );
    return $buttonarray;
}

function freeradius_changemac($vars) {
    return array(
        'templatefile' => 'macaddy',
        'breadcrumb' => array(
            'stepurl.php?action=this&var=that' => 'Change MacAddress',
        ),
        'vars' => $params
    );
    $CurrentMacAddress = $params['customfields']['MacAddress'];

    if($_POST['newmac']) {

    $username = $params["username"];
    $password = $params["password"];
    $newmacaddy = $_POST["newmac"];
    
    

    shell_exec("/some/path/to/perfect_dark_setup.sh update $username $newmacaddy"); //returns a macaddress as a string like 'c2:eb:e8:31:98:01'

        Capsule::table('tblcustomfieldsvalues')
            ->where('relid', '=', $params["serviceid"])
            ->where('fieldid', '=', 1)
            ->update(array(
                'value' => $newmacaddy,
            ));

}
}

macaddy.tpl
 

<form method="post" action="clientarea.php?action=productdetails">
<input type="hidden" name="id" value="{$serviceid}" />
<input type="submit" value="« Back to Service" class="btn" style="float: right;" />
</form>

    <div class="tab-pane fade in" id="tabChangeMacAddy">

        <h3>Change MacAddress</h3>

        
        <form class="form-horizontal" method="post" action="/clientarea.php?action=productdetails" role="form">
            <input type="hidden" name="id" value="{$serviceid}" />
            <input type="hidden" name="a" value="changemac" />
            <div id="newMacAddy" class="form-group has-feedback">
                <label for="inputNewMacAddy" class="col-sm-4 control-label">New MacAddress</label>
                <div class="col-sm-5">
                    <input type="text" class="form-control" id="inputNewMacAddy" name="newmac" autocomplete="off" value="{$newmac}" />
                    <span class="form-control-feedback glyphicon"></span>
                    <br />

            <div class="form-group">
                <div class="col-sm-offset-6 col-sm-6">
                    <input class="btn btn-primary" type="submit" value="Save Changes" />
                    <input class="btn" type="reset" value="Cancel" />
                </div>
            </div>

        </form>

How it looks currently:

image.thumb.png.172dc16c162b254ac3ffb24c1decc99e.png

image.thumb.png.b01d307abc4711220a2e937ff7c008bb.png

After submitting it takes me back to the main product details page and the custom function and update are not executed.

I reviewed both the below pages and all tpl and templates I could find that were not encoded for reference, but was unable to determine if form input is not being passed back

https://developers.whmcs.com/provisioning-modules/custom-functions/

https://developers.whmcs.com/provisioning-modules/client-area-output/

Probably missing something simple here. Any advice or examples would be helpful.  It seems like allowing clients to be able to edit a product's custom field should not be so difficult. Especially since the functionality exists on custom client fields just not implemented on product custom fields 😕

Hoping someone else who has already done this can point me in the right direction.

Thanks

 

Edited by whattheserver
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated