]> gitweb.fluxo.info Git - drupal/muamba.git/commitdiff
Adding muamba_widget() for widget handling
authorSilvio Rhatto <rhatto@riseup.net>
Mon, 7 Nov 2011 22:57:32 +0000 (20:57 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Mon, 7 Nov 2011 22:57:32 +0000 (20:57 -0200)
muamba-widget.tpl.php
muamba.business.inc
muamba.handlers.inc
muamba.module
muamba.theme.inc

index 09b43bc795fa91c39c4486505bd4d6e63fc766e0..bd856b880a56fdaecb1ec60ad24d7e9fd8cafdba 100644 (file)
@@ -31,9 +31,7 @@ if ($node->uid != $user->uid) {
     );
   }
   elseif ($transactions['uid'] == $user->uid) {
-    foreach (muamba_actions_available('sent', $transactions['status']) as $action) {
-      $content .= theme('muamba_widget_icon', array('status' => $action, 'id' => $transactions['mid']));
-    }
+    $content .= theme('muamba_widget_requester', array('transaction' => $transactions));
   }
   else {
     $content .= theme('muamba_widget_icon', array('status' => MUAMBA_REQUESTED, 'id' => $node->nid));
@@ -41,12 +39,7 @@ if ($node->uid != $user->uid) {
 }
 else {
   foreach ($transactions as $transaction) {
-    $requester = user_load($transaction['uid']);
-    $content  .= t('Request from @name.', array('@name' => $requester->name));
-    $content  .= '<br />';
-    foreach (muamba_actions_available('received', $transaction['status']) as $action) {
-      $content .= theme('muamba_widget_icon', array('status' => $action, 'id' => $transaction['mid']));
-    }
+    $content .= theme('muamba_widget_owner', array('transaction' => $transaction));
   }
 }
 
index 71563638d1145032134034a012cf86e004f3de7e..4b033e71495b8d6164966f5e999e0a4058eb1d5e 100644 (file)
@@ -365,3 +365,36 @@ function muamba_lost($mid) {
 
   return t('Item lost.');
 }
+
+/**
+ * Display a muamba widget.
+ *
+ * @param $node
+ *   Muamba node id.
+ *
+ * @return
+ *   HTML formatted muamba widget.
+ */
+function muamba_widget($node) {
+  global $user;
+
+  // Check if widget can be shown
+  if ($node->type != MUAMBA_NODE_TYPE || !muamba_has_request_access($node)) {
+    return;
+  }
+
+  $available = muamba_check_availability($node->nid);
+
+  if ($node->uid != $user->uid) {
+    $transactions = muamba_current_transactions($node, $user->uid);
+  }
+  else {
+    $transactions = muamba_current_transactions($node);
+  }
+
+  return theme('muamba_widget', array(
+    'node'         => $node,
+    'transactions' => $transactions,
+    'available'    => $available,
+  ));
+}
index f6c0982f3e1fa88be6b0cc296d090086d0c5b058..4f75d94b95ca0b367433009a4dce81596abdc704 100644 (file)
@@ -49,6 +49,10 @@ class views_handler_field_muamba_available extends views_handler_field {
    * Renders the field.
    */
   function render($values) {
+    if (!isset($values->nid)) {
+      return;
+    }
+
     global $user;
     $available = muamba_check_availability($values->nid);
 
@@ -72,9 +76,6 @@ class views_handler_field_muamba_available extends views_handler_field {
 
 /**
  * Field handler for muamba transaction status.
- *
- * @todo
- *   Show widget also in a transaction view.
  */
 class views_handler_field_muamba_actions extends views_handler_field {
   /**
@@ -95,30 +96,17 @@ class views_handler_field_muamba_actions extends views_handler_field {
 
     if (isset($values->mid)) {
       $transaction = muamba_get_transaction($values->mid);
-      // @todo
-      return 'TODO';
-    }
-    elseif (isset($values->nid)) {
-      $available = muamba_check_availability($values->nid);
-      $node      = node_load($values->nid);
-
-      // Check if widget can be shown
-      if ($node->type != MUAMBA_NODE_TYPE || !muamba_has_request_access($node)) {
-        return;
-      }
 
-      if ($node->uid != $user->uid) {
-        $transactions = muamba_current_transactions($values->nid, $user->uid);
+      if ($transaction['owner'] == $user->uid) {
+        return theme('muamba_widget_owner', array('transaction' => $transaction));
       }
-      else {
-        $transactions = muamba_current_transactions($values->nid);
+      elseif ($transaction['uid'] == $user->uid) {
+        return theme('muamba_widget_requester', array('transaction' => $transactions));
       }
-
-      return theme('muamba_widget', array(
-        'node'         => $node,
-        'transactions' => $transactions,
-        'available'    => $available,
-      ));
+    }
+    elseif (isset($values->nid)) {
+      $node = node_load($values->nid);
+      return muamba_widget($node);
     }
   }
 }
index 2b76df912e5d5791a127de0922a9d67e84017f34..e9d6bf1b35c65e38f89808daf3fcf3297adf5e71 100644 (file)
@@ -109,29 +109,9 @@ function muamba_menu() {
  * Implements hook_node_view()
  */
 function muamba_node_view($node, $view_mode, $langcode) {
-  global $user;
-
-  // Check if widget can be shown
-  if ($node->type != MUAMBA_NODE_TYPE || !muamba_has_request_access($node)) {
-    return;
-  }
-
   if ($view_mode == 'full') {
-    $available = muamba_check_availability($node->nid);
-
-    if ($node->uid != $user->uid) {
-      $transactions = muamba_current_transactions($node, $user->uid);
-    }
-    else {
-      $transactions = muamba_current_transactions($node);
-    }
-
     $node->content['muamba'] = array(
-      '#markup' => theme('muamba_widget', array(
-        'node'         => $node,
-        'transactions' => $transactions,
-        'available'    => $available,
-      )),
+      '#markup' => muamba_widget($node),
       '#weight' => 100,
     );
 
@@ -152,6 +132,18 @@ function muamba_theme($existing, $type, $theme, $path) {
         'available'    => NULL,
       ),
     ),
+    'muamba_widget_owner' => array(
+      'variables' => array(
+        'transaction' => NULL, 
+      ),
+      'file' => 'muamba.theme.inc',
+    ),
+    'muamba_widget_requester' => array(
+      'variables' => array(
+        'transaction' => NULL, 
+      ),
+      'file' => 'muamba.theme.inc',
+    ),
     'muamba_powered' => array(
       'template' => 'muamba-powered',
     ),
index a51f6f668d5cb878162b31c8f53a2b59d32a6432..a4ec6a05c3c30c91a6f32f9fe598460ce035b6e2 100644 (file)
@@ -158,3 +158,33 @@ function theme_muamba_widget_icon($variables) {
 
   return $output;
 }
+
+/**
+ * Theme callback.
+ */
+function theme_muamba_widget_owner($variables) {
+  $content     = '';
+  $transaction = $variables['transaction'];
+  $requester   = user_load($transaction['uid']);
+  $content    .= t('Request from @name.', array('@name' => $requester->name));
+  $content    .= '<br />';
+  foreach (muamba_actions_available('received', $transaction['status']) as $action) {
+    $content .= theme('muamba_widget_icon', array('status' => $action, 'id' => $transaction['mid']));
+  }
+
+  return $content;
+}
+
+/**
+ * Theme callback.
+ */
+function theme_muamba_widget_requester($variables) {
+  $content     = '';
+  $transaction = $variables['transaction'];
+
+  foreach (muamba_actions_available('sent', $transaction['status']) as $action) {
+    $content .= theme('muamba_widget_icon', array('status' => $action, 'id' => $transaction['mid']));
+  }
+
+  return $content;
+}