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("/"); } }
* 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)))); ?>