示例#1
0
文件: project.php 项目: kenjs/Goteo
 private function view($id, $show, $post = null)
 {
     $project = Model\Project::get($id, LANG);
     // recompensas
     foreach ($project->individual_rewards as &$reward) {
         $reward->none = false;
         $reward->taken = $reward->getTaken();
         // cofinanciadores quehan optado por esta recompensas
         // si controla unidades de esta recompensa, mirar si quedan
         if ($reward->units > 0 && $reward->taken >= $reward->units) {
             $reward->none = true;
         }
     }
     // mensaje cuando, sin estar en campaña, tiene fecha de publicación, es que la campaña ha sido cancelada
     if ($project->status < 3 && !empty($project->published)) {
         Message::Info(Text::get('project-unpublished'));
     } elseif ($project->status < 3) {
         // mensaje de no publicado siempre que no esté en campaña
         Message::Info(Text::get('project-not_published'));
     }
     // solamente se puede ver publicamente si...
     $grant = false;
     if ($project->status > 2) {
         // está publicado
         $grant = true;
     } elseif ($project->owner == $_SESSION['user']->id) {
         // es el dueño
         $grant = true;
     } elseif (ACL::check('/project/edit/todos')) {
         // es un admin
         $grant = true;
     } elseif (ACL::check('/project/view/todos')) {
         // es un usuario con permiso
         $grant = true;
     } elseif (isset($_SESSION['user']->roles['checker']) && Model\User\Review::is_assigned($_SESSION['user']->id, $project->id)) {
         // es un revisor y lo tiene asignado
         $grant = true;
     }
     // (Callsys)
     // si lo puede ver
     if ($grant) {
         $viewData = array('project' => $project, 'show' => $show);
         // sus entradas de novedades
         $blog = Model\Blog::get($project->id);
         // si está en modo preview, ponemos  todas las entradas, incluso las no publicadas
         if (isset($_GET['preview']) && $_GET['preview'] == $_SESSION['user']->id) {
             $blog->posts = Model\Blog\Post::getAll($blog->id, null, false);
         }
         $viewData['blog'] = $blog;
         // tenemos que tocar esto un poquito para motrar las necesitades no economicas
         if ($show == 'needs-non') {
             $viewData['show'] = 'needs';
             $viewData['non-economic'] = true;
         }
         if ($show == 'messages' && is_numeric($_GET['msgto'])) {
             $support = Model\Project\Support::get($_GET['msgto']);
             if (is_numeric($support->thread)) {
                 $viewData['thread'] = $support->thread;
             }
         }
         // -- Mensaje azul molesto para usuarios no registrados
         if (($show == 'messages' || $show == 'updates' || $show == 'evaluation') && empty($_SESSION['user'])) {
             Message::Info(Text::html('user-login-required'));
         }
         //tenemos que tocar esto un poquito para gestionar los pasos al aportar
         if ($show == 'invest') {
             // si no está en campaña no pueden estar aqui ni de coña
             if ($project->status != 3) {
                 Message::Info(Text::get('project-invest-closed'));
                 throw new Redirection('/project/' . $id, Redirection::TEMPORARY);
             }
             $viewData['show'] = 'supporters';
             /* pasos de proceso aporte
              *
              * 1, 'start': ver y seleccionar recompensa (y cantidad)
              * 2, 'login': loguear con usuario/contraseña o con email (que crea el usuario automáticamente)
              * 3, 'confirm': confirmar los datos y saltar a la pasarela de pago
              * 4, 'ok'/'fail': al volver de la pasarela de pago, la confirmación nos dice si todo bien o algo mal
              * 5, 'continue': recuperar aporte incompleto (variante de confirm)
              */
             // usamos la variable de url $post para movernos entre los pasos
             $step = isset($post) && in_array($post, array('start', 'login', 'confirm', 'continue')) ? $post : 'start';
             // si llega confirm ya ha terminado el proceso de aporte
             if (isset($_GET['confirm']) && \in_array($_GET['confirm'], array('ok', 'fail'))) {
                 unset($_SESSION['invest-amount']);
                 // confirmación
                 $step = $_GET['confirm'];
             } else {
                 // si no, a ver en que paso estamos
                 if (isset($_GET['amount'])) {
                     $_SESSION['invest-amount'] = $_GET['amount'];
                 }
                 // si el usuario está validado, recuperamos posible amount y mostramos
                 if ($_SESSION['user'] instanceof Model\User) {
                     $step = 'confirm';
                 } elseif ($step != 'start' && empty($_SESSION['user'])) {
                     // si no está validado solo puede estar en start
                     Message::Info(Text::get('user-login-required-to_invest'));
                     $step = 'start';
                 } elseif ($step == 'start') {
                     // para cuando salte
                     $_SESSION['jumpto'] = SEC_URL . '/project/' . $id . '/invest/#continue';
                 } else {
                     $step = 'start';
                 }
             }
             $viewData['step'] = $step;
         }
         if ($show == 'updates') {
             $viewData['post'] = $post;
             $viewData['owner'] = $project->owner;
         }
         if ($show == 'messages' && $project->status < 3) {
             Message::Info(Text::get('project-messages-closed'));
         }
         return new View(VIEW_PATH . '/project/view.html.php', $viewData);
     } else {
         // no lo puede ver
         throw new Redirection("/");
     }
 }
示例#2
0
 *  GNU Affero General Public License for more details.
 *
 *  You should have received a copy of the GNU Affero General Public License
 *  along with Goteo.  If not, see <http://www.gnu.org/licenses/agpl.txt>.
 *
 */
use Goteo\Core\View, Goteo\Library\Text, Goteo\Library\SuperForm;
$project = $this['project'];
$errors = $this['errors'];
$supports = array();
if (!empty($project->supports)) {
    foreach ($project->supports as $support) {
        $ch = array();
        // a ver si es el que estamos editando o no
        if (!empty($this["support-{$support->id}-edit"])) {
            $original = \Goteo\Model\Project\Support::get($support->id);
            // a este grupo le ponemos estilo de edicion
            $supports["support-{$support->id}"] = array('type' => 'group', 'class' => 'support editsupport', 'children' => array("support-{$support->id}-support-orig" => array('title' => Text::get('supports-field-support'), 'type' => 'html', 'html' => $original->support), "support-{$support->id}-support" => array('title' => '', 'type' => 'textbox', 'size' => 100, 'class' => 'inline', 'value' => $support->support, 'errors' => !empty($errors["support-{$support->id}-support"]) ? array($errors["support-{$support->id}-support"]) : array(), 'ok' => !empty($okeys["support-{$support->id}-support"]) ? array($okeys["support-{$support->id}-support"]) : array(), 'hint' => Text::get('tooltip-project-support-support')), "support-{$support->id}-description-orig" => array('title' => Text::get('supports-field-description'), 'type' => 'html', 'html' => nl2br($original->description)), "support-{$support->id}-description" => array('type' => 'textarea', 'title' => '', 'cols' => 100, 'rows' => 4, 'class' => 'inline support-description', 'value' => $support->description, 'errors' => !empty($errors["support-{$support->id}-description"]) ? array($errors["support-{$support->id}-description"]) : array(), 'ok' => !empty($okeys["support-{$support->id}-description"]) ? array($okeys["support-{$support->id}-description"]) : array(), 'hint' => Text::get('tooltip-project-support-description')), "support-{$support->id}-buttons" => array('type' => 'group', 'class' => 'buttons', 'children' => array("support-{$support->id}-ok" => array('type' => 'submit', 'label' => Text::get('form-accept-button'), 'class' => 'inline ok')))));
        } else {
            $supports["support-{$support->id}"] = array('class' => 'support', 'view' => 'view/dashboard/translates/supports/support.html.php', 'data' => array('support' => $support));
        }
    }
}
$sfid = 'sf-project-supports';
?>

<form method="post" action="/dashboard/translates/supports/save" class="project" enctype="multipart/form-data">

<?php 
echo new SuperForm(array('id' => $sfid, 'action' => '', 'level' => 3, 'method' => 'post', 'title' => '', 'hint' => Text::get('guide-project-supports'), 'class' => 'aqua', 'footer' => array('view-step-preview' => array('type' => 'submit', 'name' => 'save-supports', 'label' => Text::get('regular-save'), 'class' => 'next')), 'elements' => array('process_supports' => array('type' => 'hidden', 'value' => 'supports'), 'supports' => array('type' => 'group', 'title' => Text::get('supports-fields-support-title'), 'hint' => Text::get('tooltip-project-supports'), 'children' => $supports))));
?>