summaryrefslogtreecommitdiffstats
path: root/apk_browser.module
diff options
context:
space:
mode:
Diffstat (limited to 'apk_browser.module')
-rw-r--r--apk_browser.module91
1 files changed, 61 insertions, 30 deletions
diff --git a/apk_browser.module b/apk_browser.module
index e9e664e..e53ce53 100644
--- a/apk_browser.module
+++ b/apk_browser.module
@@ -24,6 +24,12 @@ function apk_browser_menu() {
'page arguments' => array('apk_browser_settings'),
'access arguments' => array('access apk browser'),
);
+ $items['admin/config/apk_browser/repositories'] = array(
+ 'title' => 'Repositories',
+ 'description' => 'Configure APK repositories',
+ 'page callback' => 'apk_browser_repositories_list',
+ 'access arguments' => array('access apk browser'),
+ );
$items['admin/config/apk_browser/repositories/add'] = array(
'title' => 'Add repository',
'description' => 'Add repositoriy',
@@ -31,11 +37,21 @@ function apk_browser_menu() {
'page arguments' => array('apk_browser_repository_edit_form'),
'access arguments' => array('access apk browser'),
);
- $items['admin/config/apk_browser/repositories'] = array(
- 'title' => 'Repositories',
- 'description' => 'Configure APK repositories',
- 'page callback' => 'apk_browser_repositories_list',
+ $items['admin/config/apk_browser/repositories/%/edit'] = array(
+ 'title' => 'Edit repository',
+ 'description' => 'Edit repositoriy',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('apk_browser_repository_edit_form', 4),
+ 'access arguments' => array('access apk browser'),
+ 'access callback' => TRUE,
+ );
+ $items['admin/config/apk_browser/repositories/%/delete'] = array(
+ 'title' => 'Delete repository',
+ 'description' => 'Delete repositoriy',
+ 'page callback' => 'drupal_get_form',
+ 'page arguments' => array('apk_browser_repository_delete_form', 4),
'access arguments' => array('access apk browser'),
+ 'access callback' => TRUE,
);
return $items;
}
@@ -63,19 +79,28 @@ function apk_browser_settings($form) {
return system_settings_form($form);
}
-/*
- * function apk_browser_settings_validate($form, &$form_state) {
- * if (!valid_url($form_state['values']['apk_repo_url'], TRUE)) {
- * form_set_error('apk_repo_url', t('Please specify a valid URL!'));
- * }
- * }
- */
+function apk_browser_repository_delete_form($form, &$form_state, $rid) {
+ $form['repo_id'] = array('#type' => 'hidden', '#value' => $rid);
+ return confirm_form($form, t('Are you sure you want to delete repository with ID @ID?', array('@ID' => $rid)), 'admin/config/apk_browser/repositories', t('This action cannot be undone.'), t('Delete repository'), t('Cancel'));
+}
+
+function apk_browser_repository_delete_form_submit($form, &$form_state) {
+ $repos = variable_get('apk_repositories', array());
+ unset($repos[$form_state['values']['repo_id']]);
+ variable_set('apk_repositories', array_values($repos));
+ drupal_set_message(t('Repository deleted'));
+ $form_state['redirect'] = 'admin/config/apk_browser/repositories';
+}
-function apk_browser_repository_edit_form($form, &$form_state) {
+function apk_browser_repository_edit_form($form, &$form_state, $rid = array()) {
+ if (!empty($rid)) {
+ $form['repo_id'] = array('#type' => 'hidden', '#value' => $rid);
+ }
$repo = taxonomy_vocabulary_machine_name_load('apk_repo');
$repo_tree = taxonomy_get_tree($repo->vid);
$arch = taxonomy_vocabulary_machine_name_load('apk_arch');
$arch_tree = taxonomy_get_tree($arch->vid);
+ $repos = variable_get('apk_repositories', array());
if (empty($arch_tree) || empty($repo_tree)) {
$form['warning'] = array(
'#type' => 'item',
@@ -91,7 +116,7 @@ function apk_browser_repository_edit_form($form, &$form_state) {
'#type' => 'textfield',
'#title' => t('Repository URL'),
'#size' => '100',
- '#default_value' => '',
+ '#default_value' => (empty($rid)) ? '' : $repos[$rid]['url'],
'#description' => t('Link to the APKINDEX.tar.gz file inside the repository'),
'#required' => TRUE,
);
@@ -103,6 +128,7 @@ function apk_browser_repository_edit_form($form, &$form_state) {
'#type' => 'select',
'#options' => $repo_options,
'#title' => 'Select repository',
+ '#default_value' => (empty($rid)) ? '' : $repos[$rid]['repo'],
'#description' => t('Please make sure you select the correct repository.
Preventing to do so will break package listing')
);
@@ -112,14 +138,14 @@ function apk_browser_repository_edit_form($form, &$form_state) {
$form['settings']['arch'] = array(
'#type' => 'select',
'#options' => $arch_options,
+ '#default_value' => (empty($rid)) ? '' : $repos[$rid]['arch'],
'#title' => 'Select architecture',
'#description' => t('Please make sure you select the correct architecture.
Preventing to dox so will break package listing')
);
-
$form['submit'] = array(
'#type' => 'submit',
- '#value' => t('Add repository')
+ '#value' => t('Save repository')
);
}
return $form;
@@ -129,34 +155,37 @@ function apk_browser_repository_edit_form_validate($form, &$form_state) {
if (!valid_url($form_state['values']['apk_repo_url'], TRUE)) {
form_set_error('apk_repo_url', t('Please specify a valid URL!'));
}
- foreach (variable_get('apk_repositories', array()) as $repo) {
- if ($form_state['values']['apk_repo_url'] == $repo['url']) {
- form_set_error('apk_repo_url', t('You are trying to add a double url'));
- }
- }
+ //foreach (variable_get('apk_repositories', array()) as $repo) {
+ // if ($form_state['values']['apk_repo_url'] == $repo['url']) {
+ // form_set_error('apk_repo_url', t('You are trying to add a double url'));
+ // }
+ // }
}
function apk_browser_repository_edit_form_submit($form, &$form_state) {
- $repos[] = array(
+ $repos = array(
'url' => $form_state['values']['apk_repo_url'],
'arch' => $form_state['values']['arch'],
'repo' => $form_state['values']['repo']
);
- $current_repos = variable_get('apk_repositories', array());
- //$result = (empty($current_repos)) ? $repos : array_merge($repos, $current_repos);
- variable_set('apk_repositories', array_merge($current_repos, $repos));
- $form_state['redirect'] = 'admin/config/apk_browser/repositories';
+ $repo_db = variable_get('apk_repositories', array());
+ isset($form_state['values']['repo_id']) ? ( $repo_db[$form_state['values']['repo_id']] = $repos) : ($repo_db[] = $repos);
+ variable_set('apk_repositories', $repo_db);
drupal_set_message(t('Repositories are saved'));
- //drupal_set_message(t('Submitting values: @values', array('@values' => var_export($result, TRUE))));
+ $form_state['redirect'] = 'admin/config/apk_browser/repositories';
+ //drupal_set_message(t('Submitting values: @values', array('@values' => var_export($form_state, TRUE))));
}
function apk_browser_repositories_list() {
$terms = '';
$header = array('ID', 'URL', 'Repo', 'Arch', array('data' => 'Manage', 'colspan' => '2'));
- $add = l('<img src="' . base_path() . drupal_get_path('module', 'apk_browser') . '/images/add.png" title="Add repo" />', 'admin/config/apk_browser/repositories/add', array('html' => TRUE));
+ $add = l('<img src="' . base_path() . drupal_get_path('module', 'apk_browser') .
+ '/images/add.png" title="Add repo" />', 'admin/config/apk_browser/repositories/add', array('html' => TRUE));
foreach (variable_get('apk_repositories', array()) as $key => $repo) {
- $edit = l('<img src="' . base_path() . drupal_get_path('module', 'apk_browser') . '/images/page_white_edit.png" title="Edit repo" />', 'somelink', array('html' => TRUE));
- $delete = l('<img src="' . base_path() . drupal_get_path('module', 'apk_browser') . '/images/delete.png" title="Delete repo" />', 'somelink', array('html' => TRUE));
+ $edit = l('<img src="' . base_path() . drupal_get_path('module', 'apk_browser') .
+ '/images/page_white_edit.png" title="Edit repo" />', 'admin/config/apk_browser/repositories/' . $key . '/edit', array('html' => TRUE));
+ $delete = l('<img src="' . base_path() . drupal_get_path('module', 'apk_browser') .
+ '/images/delete.png" title="Delete repo" />', 'admin/config/apk_browser/repositories/' . $key . '/delete', array('html' => TRUE));
$terms = '<table><tr>';
$terms .= '</tr></table>';
$tarch = taxonomy_term_load($repo['arch']);
@@ -164,7 +193,9 @@ function apk_browser_repositories_list() {
$rows[] = array($key, $repo['url'], $trepo->name, $tarch->name, $edit, $delete);
}
if (!empty($rows)) {
- return theme('table', array('header' => $header, 'rows' => $rows));
+ $output = theme('table', array('header' => $header, 'rows' => $rows));
+ $output .= $add;
+ return $output;
} else {
return t('No repositories added. Please add one.') . ' ' . $add;
}