Storybook

Sorakuilu

Harjoituksen osat

Tunti 1. Toimeksianto ja storybook-sovelluksen esitutkimus
Tunti 2. Suunnittele storybook
Tunti 3. Toteuta tietokanta
Tunti 4. Toteuta käyttöliittymä
Tunti 5. Laadi runko ja reititys järjestelmään
Tunti 6. Toteuta lukijan etusivu (tietojen haku lukijan näkymässä)
Tunti 7. Toteuta rekisteröityminen(tietojen lisäys lukijan näkymässä)
Tunti 8. Toteuta autentikointi (kirjaudu ja kirjaudu ulos)
Tunti 9. Toteuta ylläpidon etusivu (tietojen haku)
Tunti 10.Toteuta jutun lisäys ylläpitonäkymässä, tietojen tarkistus mukaan
Tunti 11.Toteuta jutun muokkaus ylläpitonäkymässä, tietojen tarkistus mukaan
Tunti 12.Toteuta jutun poistaminen ylläpitonäkymässä
Omat tehtävät: suunnittele ja toteuta admin-näkymän yhden jutun näyttäminen (linkki on jo olemassa), omien tietojen muokkaaminen sekä salasanan vaihtaminen (piirrä lisäksi kaaviot)


Tunti 12. Toteuta jutun poistaminen ylläpitonäkymässä

Kirjautuneelle käyttäjälle avautuu admin-sivu, jossa näkyvät hänen itsensä kirjoittamat jutut,linkit muokkaukseen ja poistamiseen.

Autentikoinnin varmistamiseksi reitityksessä tarkistetaan, onko käyttäjä kirjautunut.

Kun autetikoitunut käyttäjä klikkaa linkkiä, reititys kutsuu StoryControllerin deleteStory-metodia. Metodi kutsuu Story-luokan metodia delete_story($id) poistamaan jutun tietokannasta.

Kun juttu on poistettu, palataan uudestaan admin.view-näkymään (käyttäjän omat jutut). Näkymään tulee viesti ($message) poistamisen onnistumisesta (tai epäonnistumisesta).

Tämän tunnin tehtävät

toteutettavat osat

Kuvassa näkyvät tässä vaiheessa tarvittavat osat, jo toteutetut ovat harmaalla pohjalla.

./database/models/Story.php, lisää metodi delete_story($data)

Metodi poistaa lähetetyn id:n sisältävän jutun stories-taulusta.

<?php
public static function delete_story($id)
    {
        global 
$db;
        
        try {
            
$statement $db->prepare("DELETE FROM stories WHERE story_id = ?");
            
$statement->execute(array($id));
        }
        catch (
PDOException $e)
        {
         
/* Exception (SQL error) */
          
echo $e->getMessage();
          return 
FALSE;
        }
        return 
TRUE;
    }
?>

Reititys

Reitti kutsuu StoryController-luokan metodia deleteStory($id,$user).

Reittiin lisätään myös tarkistus kirjautumisesta: siinä käytetään User-luokan metodia session_login(), joka palauttaa true, mikäli käyttäjä on kirjautunut, muuten sisällytetään kirjautumislomake.

<?php
Route
::add('/deletestory/(.*)', function($id) use ($userController,$storyController) {
    if(
$userController->getUser()->sessionLogin()) $storyController->deleteStory($id,$userController->getUser());
    else require 
'./views/loginform.view.php';
},
'get');
?>

./controllers/storyController.php - lisää metodi deleteStory($id,$user)

deleteStory($id,$user) kutsuu Story-luokan metodia delete_story($id) poistamaan jutun tietokannasta. Poistamisen onnistumisesta tai epäonnistumisesta tulee se muodostaa viestin ($message). Sen jälkeen se hakee kirjoittajan jutut ja sisällyttää admin.view-näkymän.

<?php
    
public static function deleteStory($id,$user)
    {
        if(
Story::delete_story($id)) $message "Juttu on poistettu";
        else 
$message ="Jutun poistaminen ei onnistu";

        
// preparing the view
        
$account_id $user->getId();
        
$stories Story::get_stories_by_id($account_id);
        require 
'./views/admin.view.php';
    }
?>


>> Tunti 13. Omat tehtävät >>