diff options
author | Simon Rettberg | 2016-05-18 18:04:56 +0200 |
---|---|---|
committer | Simon Rettberg | 2016-05-18 18:04:56 +0200 |
commit | 2e18b36a287ad9b25619f9e2a073dcedf6d620ee (patch) | |
tree | 96d802fdc1c21ee9aa9b4d89a6611db7d8502433 /modules-available/baseconfig_partitions_cdn | |
parent | Modularized baseconfig fetching (api) (diff) | |
download | slx-admin-2e18b36a287ad9b25619f9e2a073dcedf6d620ee.tar.gz slx-admin-2e18b36a287ad9b25619f9e2a073dcedf6d620ee.tar.xz slx-admin-2e18b36a287ad9b25619f9e2a073dcedf6d620ee.zip |
MORE WMORK
Diffstat (limited to 'modules-available/baseconfig_partitions_cdn')
3 files changed, 211 insertions, 0 deletions
diff --git a/modules-available/baseconfig_partitions_cdn/config.json b/modules-available/baseconfig_partitions_cdn/config.json new file mode 100644 index 00000000..a3036a56 --- /dev/null +++ b/modules-available/baseconfig_partitions_cdn/config.json @@ -0,0 +1,4 @@ +{ + "category": "main.settings", + "dependencies": [ "baseconfig" ] +}
\ No newline at end of file diff --git a/modules-available/baseconfig_partitions_cdn/page.inc.php b/modules-available/baseconfig_partitions_cdn/page.inc.php new file mode 100644 index 00000000..b6ea869a --- /dev/null +++ b/modules-available/baseconfig_partitions_cdn/page.inc.php @@ -0,0 +1,133 @@ +<?php + +class Page_BaseConfig_Partitions_CDN extends Page +{ + + protected function doPreprocess() + { + User::load(); + + $action = Request::post('action'); + + if($action == 'new_partition') { + $this->addPartition(); + } + if($action == 'reset') { + $this->resetConfig(); + } + + $deletePartition = Request::get('deletePartition'); + if($deletePartition !== false) { // TODO: CSRF: Actions that change/update/delete anything should be POST + $this->deletePartition($deletePartition); + } + + $this->updatePartitions(); + } + + protected function doRender() + { + if (!User::hasPermission('baseconfig_local')) { + Message::addError('main.no-permission'); + Util::redirect('?do=Main'); + } + + //loads partition settings + $partitions = array(); + $res = Database::simpleQuery('SELECT id, partition_id, size, mount_point, options FROM setting_partition WHERE user=:user', + array( 'user' => User::getId() )); + while ($row = $res->fetch(PDO::FETCH_ASSOC)) { + $partition = array( + 'id' => $row['id'], + 'partition_id' => $row['partition_id'], + 'size' => $row['size'], + 'mount_point' => $row['mount_point'], + 'options' => $row['options'] + ); + $partitions[] = $partition; + } + + Render::addTemplate('_page', array( + 'partitions' => $partitions, + 'user' => User::getId() + )); + } + + private function addPartition() { + $partId = Request::post('new-partition-id'); + $partSize = Request::post('new-partition-size'); + $partMountPoint = Request::post('new-partition-mount-point'); + $partOptions = Request::post('new-partition-options'); + + if(strlen($partId) < 1 || strlen($partSize) < 1){ + Message::addError('main.empty-field'); + }else{ + $data = array( + 'partition_id' => $partId, + 'size' => $partSize, + 'mount_point' => $partMountPoint, + 'options' => $partOptions, + 'user' => User::getId() + ); + if (Database::exec('INSERT INTO setting_partition SET partition_id = :partition_id, size = :size, + mount_point = :mount_point, options = :options, user = :user ', $data) != 1) { + Util::traceError('Could not create new partition in DB'); + } + } + Util::redirect('?do=BaseConfig'); + } + + private function deletePartition($id){ + if(is_numeric($id)){ + $data = array( + 'id' => $id, + 'user' => User::getId() + ); + if (Database::exec('DELETE FROM setting_partition WHERE id = :id AND user = :user', $data) != 1) { + Util::traceError('Could not delete partition in DB'); + } + } + Util::redirect('?do=BaseConfig'); + } + + private function updatePartitions(){ + $partitions = array(); + foreach($_POST as $key => $value){ + if(substr($key,0,9) == 'partition'){ + $id = substr($key,10,1); + $type = substr($key,12); + $partitions[$id][$type] = $value; + } + } + + foreach($partitions as $key => $data){ + $data = array( + 'id' => $key, + 'partition_id' => $data['partition_id'], + 'size' => $data['size'], + 'mount_point' => $data['mount_point'], + 'options' => $data['options'], + 'user' => User::getId() + ); + Database::exec('UPDATE setting_partition SET partition_id=:partition_id, size=:size, mount_point=:mount_point, + options=:options WHERE id=:id AND user=:user;', $data); + } + if (!empty($partitions)) { + Message::addSuccess('partitions-updated'); + Util::redirect('?do=BaseConfig'); + } + } + + private function resetConfig(){ + $data = array( + 'user' => User::getId() + ); + //Delete all config values + Database::exec('DELETE FROM setting_partition WHERE user = :user', $data); + //Create default partition values + Database::exec ( "INSERT INTO setting_partition SET partition_id = '44', size = '5G', mount_point = '/tmp', user = :user", $data ); + Database::exec ( "INSERT INTO setting_partition SET partition_id = '43', size = '20G', mount_point = '/boot', options = 'bootable', user = :user", $data ); + Database::exec ( "INSERT INTO setting_partition SET partition_id = '40', size = '20G', mount_point = '/cache/export/dnbd3', user = :user", $data ); + Database::exec ( "INSERT INTO setting_partition SET partition_id = '41', size = '5G', mount_point = '/home', user = :user", $data ); + Database::exec ( "INSERT INTO setting_partition SET partition_id = '82', size = '1G', user = :user", $data ); + } +}
\ No newline at end of file diff --git a/modules-available/baseconfig_partitions_cdn/templates/_page.html b/modules-available/baseconfig_partitions_cdn/templates/_page.html new file mode 100644 index 00000000..ee764e37 --- /dev/null +++ b/modules-available/baseconfig_partitions_cdn/templates/_page.html @@ -0,0 +1,74 @@ +<h1>{{lang_partitioningManagement}}</h1> + +<form action="?do=BaseConfig_Partitions_CDN" method="post"> + <input type="hidden" name="token" value="{{token}}"> + <button class="btn btn-lg btn-primary" type="submit">{{lang_save}}</button> + <button class="btn btn-lg btn-primary" type="reset">{{lang_reset}}</button> + <a class="btn btn-lg btn-primary" href="#" onclick="saveConfig()">Download</a> +</form> +<div> +<form method="post" action="?do=BaseConfig_Partitions_CDN"> + <input type="hidden" name="token" value="{{token}}"> + <input type="hidden" name="action" value="reset"> + <button class="btn btn-default" type="submit" onclick="return confirm('{{lang_resetConfirm}}');">{{lang_resetDefault}}</button> +</form> +</div> + +<!-- Create Partition Window --> +<form action="?do=BaseConfig_Partitions_CDN" method="post"> + <div class="modal fade" id="add-partition" tabindex="-1" role="dialog"> + <div class="modal-dialog"> + + <div class="modal-content"> + <div class="modal-header">{{lang_newPartition}}</div> + <div class="modal-body"> + + <div class="input-group"> + <span class="input-group-addon">{{lang_partitionId}}</span> + <input name="new-partition-id" class="form-control" type="text"> + </div> + <p class="help-block">{{lang_helpId}}</p> + <div class="input-group"> + <span class="input-group-addon">{{lang_partitionSize}}</span> + <input name="new-partition-size" class="form-control" type="text"> + </div> + <p class="help-block">{{lang_helpSize}}</p> + <div class="input-group"> + <span class="input-group-addon">{{lang_partitionMountPoint}}</span> + <input name="new-partition-mount-point" class="form-control" type="text"> + </div> + <p class="help-block">{{lang_helpMountPoint}}</p> + <div class="input-group"> + <span class="input-group-addon">{{lang_partitionOptions}}</span> + <input name="new-partition-options" class="form-control" type="text"> + </div> + <p class="help-block">{{lang_helpOptions}}</p> + <input type="submit" class="btn btn-primary" value="{{lang_create}}"> + </div> + <div class="modal-footer"><a class="btn btn-primary" data-dismiss="modal">{{lang_close}}</a></div> + </div> + </div> + </div> + <input type="hidden" name="action" value="new_partition"> + <input type="hidden" name="token" value="{{token}}"> +</form> +<script type="text/javascript"> + document.getElementById("cat-extra-6").innerHTML = "<div class='list-group'> <div class='list-group-item' style='background-color:#f5f5f5;color:#428bca;'> " + + "{{lang_catPartition}} <span style='display:inline-block; float: right; margin-top: -7px;'> <a class='btn btn-default ' data-toggle='modal' " + + "data-target='#add-partition'> <span class='glyphicon glyphicon-plus'></span> </a> </span> </div> {{#partitions}} <div class='list-group-item'> " + + "<div class='row'> <div class='col-md-1'> <input name='partition-{{id}}-partition_id' type='text' class='form-control' size='30' value='{{partition_id}}'" + + " placeholder='{{lang_partitionId}}' /> </div> <div class='col-md-1'> <input name='partition-{{id}}-size' type='text' class='form-control' size='30' " + + "value='{{size}}' placeholder='{{lang_partitionSize}}'/> </div> <div class='col-md-4'> <input name='partition-{{id}}-mount_point' type='text' " + + "class='form-control' size='30' value='{{mount_point}}' placeholder='{{lang_partitionMountPoint}}'/> </div> <div class='col-md-4'> <input " + + "name='partition-{{id}}-options' type='text' class='form-control' size='30' value='{{options}}' placeholder='{{lang_partitionOptions}}'/> </div> " + + "<div class='col-md-2'> <a class='btn btn-danger' href='?do=BaseConfig&deletePartition={{id}}&token={{token}}' ><span class='glyphicon glyphicon-trash'>" + + "</span> {{lang_delete}}</a> </div> </div> </div> {{/partitions}} </div> </div>"; + + function saveConfig(){ + if(confirm('{{lang_confirm}}')) + window.location = 'api.php?do=baseconfig&user={{user}}&save=true'; + else + window.location = 'api.php?do=baseconfig&user={{user}}'; + } + +</script>
\ No newline at end of file |