Linux-si.org

RTFB!

10ka za Gnome!

60%
40%

Včeraj je Gnome (desktop software) praznoval 10 obletnico. Po 10ih letih razvoja se danes lahko mi uporabniki razvajamo z zastonj desktop aplikacijo na Linux/UNIX operacijskih sistemih. Prvo obvestilo o začetku Gnome projekta je najavil Miguel de Icaza ki je tudi ustanovitelj projekta.

10ka za gnome

iNobl: 25% [?]

Tagi:
  • 2 komentarjev
  • Kategorije: Linux/GNU and Novice
  • Izšel LinuxMCE 0704

    80%
    20%

    Kaj je LinuxMCE ? LinuxMCE je medijski dodatek za Linux distribucijo Kubuntu! Zadeva je krasna in priporočam da si ogledate sledeči video! Pa še ena novička in opis o zadevi

    iNobl: 30% [?]

    Tagi:
    75%
    25%

    Na netu sem našel en zelo zanimiv zapis kjer opisuje kako sesuti IE6 z eno vrstico kode. V FF, Opera, ipd. (nevem za vse) dela ok. V IE7 sicer dela ok vendar v vnosno polje nemorate nič vpisati. Če imate IE7 minimiziran in zaženete to kodo in nato maksimizirate okno se bo IE7 tudi sesul :)

    In to je ta super duper vrstica:

    1. <style>*{position:relative}</style><table><input /></table>

    Sprobate lahko tukaj.

    iNobl: 34% [?]

    Tagi:

    CakePHP: Uporaba pager-ja

    75%
    25%

    Tokrat bom opisal eno preprosto uporabo pagerja v CakePHP aplikaciji. Primer bom navedel za novice. Recimo da hočemo na eni strani po 5 novic razvrščenih po datumu.

    Na svežo si skopiramo nekam najnovejšo različico CakePHP frameworka. Jaz sem si dal zadevo v direktorij “cakephp”. Kam boste dali sami je vaša odločitev.

    V app/config/core.php spremenimo vrednost konstante CAKE_SESSION_STRING v nek drug poljuben random string. To nam sistem tudi napiše. Imeti morate tudi pisljiv app/tmp direktorij.

    Gremo k bistvu. Naredimo bazo. V bazi naredimo tabelo news z naslednjimi polji:

    1. CREATE TABLE `news` (
    2. `id` int(11) NOT NULL AUTO_INCREMENT,
    3. `title` varchar(35) NOT NULL,
    4. `flash` text NOT NULL,
    5. `content` text NOT NULL,
    6. `hidden` tinyint(1) NOT NULL,
    7. `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    8. PRIMARY KEY (`id`),
    9. FULLTEXT KEY `content` (`content`),
    10. FULLTEXT KEY `flash` (`flash`)
    11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

    Lahko bi uporabil samo id, title, content, created polja vendar sem zaradi nadlanjih zapisov tabelo malce razširil da se nebo treba takrat matrati :)

    Sedaj preimenujemo app/config/database.php.default v database.php. V database.php nastavite vse potrebne podatke za povezavo do vaše baze.
    Primer:

    1. class DATABASE_CONFIG {
    2.  
    3. var $default = array(
    4. 'driver' => 'mysql',
    5. 'persistent' => false,
    6. 'host' => 'localhost',
    7. 'login' => 'username_za_dostop_do_vase_baze',
    8. 'password' => 'geslo',
    9. 'database' => 'ime_vase_baze',
    10. 'prefix' => ''
    11. );
    12. }

    F5 in sistem bi vam moral izpisati da se je uspešno povezal do vaše baze => “Your database configuration file is present.”. V primeru napake vam bo to sistem lepo povedal :)

    Naredimo file app/app_controller.php. In dodamo vanj naslednje:

    1. < ?php
    2.  
    3. class AppController extends Controller {
    4.  
    5. public $ext = '.tpl';
    6.  
    7. }
    8.  
    9. ?>

    Kaj nam app_controller.php omogoča ? Omogoča nam da v aplikaciji nastavimo neke nastavitve na neko vrednost ki jo hočemo da je veljavna povsod in ne samo v določenem kontrolerju. S spremenljivko $ext nastavimo končnico za template “.tpl”. Po defaultu uporablja sistem .ctp. Ta korak vam ni treba narediti vendar morate template ustvariti z .ctp končnico namesto .tpl.

    Naredimo kontroler. app/controllers/news_controller.php
    V news_controller.php file damo naslednje:

    1. < ?php
    2.  
    3. class NewsController extends AppController {
    4. public $name = 'News';
    5. public $uses = array('News');
    6.  
    7. public function index()
    8. {
    9.  
    10. }
    11. }
    12.  
    13. ?>

    Naredimo model models/news.php. Dodamo naslednje:

    1. < ?php
    2.  
    3. class News extends AppModel {
    4. public $name = 'News';
    5. }
    6.  
    7. ?>

    Naredimo tepmlate za prvo stran pri novicah app/views/news/index.tpl. Sedaj gremo na http://vas.host.name/direktorij_kjer_je_cakephp/news/. Če je kaj pravice na svetu potem nebi smeli dobiti nobenega error-ja.

    Dodajmo nekaj vnosov v tabelo news.

    1. INSERT INTO `news` VALUES (1, 'Novica 1', 'Uvod za novico 1', 'Glavno besedilo za novico 1', 0, '2007-08-04 19:31:53');
    2. INSERT INTO `news` VALUES (2, 'Novica 2', 'Uvod za novico 1', 'Glavno besedilo za novico 2', 0, '2007-08-04 19:31:53');
    3. INSERT INTO `news` VALUES (3, 'Novica 3', 'Uvod za novico 3', 'Glavni opis za novico 3', 0, '2007-08-04 19:32:52');
    4. INSERT INTO `news` VALUES (4, 'Novica 4', 'Uvod za novico 4', 'Glavni opis za novico 4', 0, '2007-08-01 19:32:52');
    5. INSERT INTO `news` VALUES (5, 'Novica 5', 'Uvod za novico 5', 'Glavni opis za novico 5', 0, '2007-08-01 19:33:53');
    6. INSERT INTO `news` VALUES (6, 'Novica 6', 'Uvod za novico 6', 'Glavni opis za novico 6', 0, '2007-08-04 19:33:53');
    7. INSERT INTO `news` VALUES (7, 'Novica 7', 'Uvod za novico 7', 'Glavno besedilo za novico 7', 0, '2007-07-04 19:31:53');
    8. INSERT INTO `news` VALUES (8, 'Novica 8', 'Uvod za novico 8', 'Glavno besedilo za novico 8', 0, '2007-08-04 19:31:53');
    9. INSERT INTO `news` VALUES (9, 'Novica 9', 'Uvod za novico 9', 'Glavni opis za novico 9', 0, '2007-08-04 19:32:52');
    10. INSERT INTO `news` VALUES (10, 'Novica 10', 'Uvod za novico 10', 'Glavni opis za novico 10', 0, '2007-06-04 19:32:52');
    11. INSERT INTO `news` VALUES (11, 'Novica 11', 'Uvod za novico 11', 'Glavni opis za novico 11', 0, '2007-08-02 19:33:53');
    12. INSERT INTO `news` VALUES (12, 'Novica 12', 'Uvod za novico 12', 'Glavni opis za novico 12', 0, '2007-08-03 19:33:53');

    V kontrolerju pridobimo podatke in vključimo pager in nato prikažimo zapise v index.tpl.

    V news_controller.php dodajmo:

    1. public $paginate = array('limit' => 5, 'page' => 1);

    V index() funkcijo dodajmo naslednje:

    1. $this->paginate['order'] = array('created' => 'desc');
    2. $this->set('News', $this->paginate('News'));

    V prvi vrstici povemo pager-ju da naj rezultate sortira po polju created v padajočem načinu. V drugi vrstici pridobimo podatke iz baze in jih podamo v template index.tpl. V index.tpl bodo novice v $News spremenljivki.

    Sedaj bi moral news_controller.php izgledati nekako takole:

    1. < ?php
    2.  
    3. class NewsController extends AppController {
    4. public $name = 'News';
    5. public $uses = array('News');
    6. public $paginate = array('limit' => 5, 'page' => 1);
    7.  
    8. public function index()
    9. {
    10. $this->paginate['order'] = array('created' => 'desc');
    11. $this->set('News', $this->paginate('News'));
    12. }
    13. }
    14.  
    15. ?>

    Prikažimo podatke in pager v index.tpl.

    V index.tpl:

    1. <table cellpadding="0" cellspacing="0" width="50%">
    2. <tr style="font-weight: bold;">
    3. <td>Naslov</td>
    4. <td>Uvod</td>
    5. <td>Dodano</td>
    6. </tr>
    7. < ?php
    8. if(!empty($News)) {
    9. foreach ($News as $Item) { ?>
    10. <tr>
    11. <td>< ?php echo $Item['News']['title']; ?></td>
    12. <td>< ?php echo $Item['News']['flash']; ?></td>
    13. <td>< ?php echo $Item['News']['created']; ?></td>
    14. </tr>
    15. < ?php }} ?>
    16. </table>
    17.  
    18.  
    19. <div style="text-align: center;">
    20. < ?php echo $paginator->prev('Nazaj'); ?>
    21. < ?php echo $paginator->numbers(); ?>
    22. < ?php echo $paginator->next('Naprej'); ?>
    23. </div>

    Evo, to je cela umetnost :) Mislim da vsi štekate kaj sem nareidl v index.tpl ? I hope so :)

    Naslednjič bomo o dodajanju in urejanju novic, zato zadevo le shranite da nebo treba še enkrat delat ;)

    Zadevo si lahko ogledate na http://www.linux-si.org/cakephp/news/

    Uporabil:
    PHP 5.2.3
    MySQL 5
    CakePHP cake_1.2.0.5427alpha
    http://www.linux-si.org/cakephp/news/

    P.S. Ne me jebat za kake morebitne slovnične napake :D

    iNobl: 32% [?]

    Tagi:
  • 0 komentarjev
  • Kategorije: Linux/GNU, PHP and Software
  • Salmonela

    100%
    0%

    Nova cvetka na sceni :P

    Zadnje dni nimam kaj pametnega napisat zato pa so potem taki bedni zapisi. No sej kot da je ker zapis od prej kej boljši :)

    iNobl: 13% [?]

    Tagi:
  • 2 komentarjev
  • Kategorije: Krneki