Programlama | Programlama Dilleri | C Programlama Dili |C++

Anasayfa Programlama Php Pc Programlama Kod Renklendirici Joomla 1.5 Uygulama Eki


Pc Programlama Kod Renklendirici Joomla 1.5 Uygulama Eki

HazirProgramKod kod renklendiricisi, Joomla içerik yönetim sistemlerini kullanan internet sitelerinde yayınlanan kodların daha renkli ve okunabilir olmasını sağlar.HazirProgramKod kod renklendiricisi Joomla ile kurulu gelen Geshi kod renklendirici(syntax highlighter) paketini kullanır.HazirProgramKod mambotu Joomla ile tanımlı gelen paketten farklı olarak kod renklendirme yaparken "{" "}" parantezlerininin kullanımına izin verir.Joomla ile varsayılan olarak gelen TinyMCE WYSIWYG editöründe sorunsuzca kullanılabilir.

Diller :
Joomla paketinin içinde gelen tanımlı diller şunlardır: css,html,ini,javascript,mysql,php,sql,xml
Extradan diller eklemek isterseniz (Örneğin C++, Java vs.) Geshi projesninin sayfasından indirdiğiniz proje dosyasındaki dilleri siteniz altındaki libraries\geshi\geshi altına yükleyebilirsiniz.

Kullanımı :

{HazirProgramKod dil="cpp" satirlar="var" renklendir="hayir"}

// Kodunuz buraya gelecek

{/HazirProgramKod}

renklendir="hayir" özelliği kodların renklendirilmesini engellemek içindir. Örneğin HazirPrograKod etiketini yukardaki gibi içeriğin herhangi bir yerinde göstermek isterseniz renklendir="hayir" özelliğini aktif etmeniz gerekir. Varsayılan olarak renklendirme vardır.

hazirprogramkod.php dosyasında eklentinin kaynak kodu vardır.

hazirprogramkod.php

  1. <?php
  2.  
  3.     /*
  4.    
  5.     HazirProgramKod Kod Renklendirici Joomla 1.5 Plugin
  6.     HazirProgramKod Kod Renklendirici highlights programming languages' codes.
  7.     Copyright (C) 2009 Şevket Umut ÇAKIR
  8.  
  9.     This program is free software: you can redistribute it and/or modify
  10.     it under the terms of the GNU General Public License as published by
  11.     the Free Software Foundation, either version 3 of the License, or
  12.     (at your option) any later version.
  13.  
  14.     This program is distributed in the hope that it will be useful,
  15.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.     GNU General Public License for more details.
  18.  
  19.     You should have received a copy of the GNU General Public License
  20.     along with this program.  If not, see <http://www.gnu.org/licenses/>.
  21.  
  22.     */
  23.  
  24.    
  25. // Direk erişim yasaklanıyor...
  26. defined( '_JEXEC' ) or die( 'Restricted access' );
  27.  
  28. jimport( 'joomla.event.plugin' );
  29.  
  30. /**
  31. * HazirProgramKod plugin sınıfı
  32. */
  33. class plgContentHazirProgramKod extends JPlugin {
  34.  
  35.   function plgContentHazirProgramKod( &$subject ) {
  36.     parent::__construct( $subject );
  37.     $this->_plugin =& JPluginHelper::getPlugin( 'content', 'hazirprogramkod' );
  38.     $this->_params = new JParameter( $this->_plugin->params );
  39.   }
  40.  
  41.  
  42.   function onPrepareContent( &$row, &$params, $page=0 ) {
  43.  
  44.     // etiketlerin bulunduğu yeri belirlemek için seçilen düzenli ifade
  45.     $O="{";
  46.     $C="}";
  47.     $tag="HazirProgramKod";
  48.     $regex="#{$O}({$tag}.*?){$C}((?>{$O}(?!/?{$tag}[^{$O}]*?{$C})|[^{$O}]|(?R))*){$O}/{$tag}{$C}#is";
  49.     $GLOBALS['_MAMBOT_HAZIRPROGRAMKOD_PARAMETRELER'] =& $this->_params;
  50.  
  51.     // yer değiştirmeyi gerçekleştir.
  52.     $row->text = preg_replace_callback( $regex, 'plgContentHazirProgramKod::degistirici', $row->text );
  53.  
  54.     return true;
  55.   }
  56. /**
  57. * Eşleşen etiketleri değiştirir.
  58. * @param array Eşleşenlerin dizisi
  59. * @return string
  60. */
  61.   private static function degistirici( &$matches ) {
  62.     $params =& $GLOBALS['_MAMBOT_HAZIRPROGRAMKOD_PARAMETRELER'];
  63.     jimport('geshi.geshi');
  64.     jimport('domit.xml_saxy_shared');
  65.    
  66.     /*
  67.     for($i=0;$i<count($matches);$i++)
  68.     {
  69.         echo "<p><b>$i.</b></p>";
  70.         print_r($matches[$i]);
  71.     }
  72.     return "";
  73.     */
  74.     $args = SAXY_Parser_Base::parseAttributes( $matches[1] );
  75.     $text = $matches[2];
  76.    
  77.     //kod renklendirme işleminin yapılıp yapılmayacağını belirleyen özellik
  78.     $renklendir = JArrayHelper::getValue( $args, 'renklendir', 'evet' );
  79.     if($renklendir=="hayır" || $renklendir=="hayir")
  80.         return $matches[0];
  81.     //hangi dilin kullanılacağını belirleyen özellik
  82.     $dil = JArrayHelper::getValue( $args, 'dil', 'php' );
  83.     // Satır numaralarının gösterilip, gösterilmeyeceğini belirleyen dalga
  84.     $satirlar = JArrayHelper::getValue( $args, 'satirlar', 'yok' );
  85.    
  86.     // HTML haricindeki dillerde paragraf etiketlerini \n'e çevir
  87.     if($dil!="html")
  88.     {
  89.         $html_entities_match = array( "|\<p\>|", "|\<\/p\>|" );
  90.         $html_entities_replace = array( "\n", "\n" );
  91.  
  92.         $text = preg_replace( $html_entities_match, $html_entities_replace, $text );
  93.     }
  94.    
  95.     $html_entities_match = array( "|\<br \/\>|", "#<#", "#>#", "|'|", '#"#', '# #' );
  96.     $html_entities_replace = array( "\n", "<", ">", "'", '"', ' ' );
  97.  
  98.     $text = preg_replace( $html_entities_match, $html_entities_replace, $text );
  99.  
  100.     $text = str_replace('<', '<', $text);
  101.     $text = str_replace('>', '>', $text);
  102.  
  103.     $text = str_replace( ' ', '  ', $text );
  104.     //normal \n leri göstermek için
  105.     $text = str_replace( '\n', '\n', $text );
  106.  
  107.     $geshi = new GeSHi( $text, $dil );
  108.     switch( $satirlar ) {
  109.       case 'var':
  110.         $geshi->enable_line_numbers( GESHI_NORMAL_LINE_NUMBERS );
  111.         break;
  112.       case 'fancy':
  113.         $geshi->enable_line_numbers( GESHI_FANCY_LINE_NUMBERS );
  114.         break;
  115.       case 'yok':
  116.       default:
  117.         break;
  118.     }
  119.     //konteyner tipinin belirlenmesi
  120.     $konteynertipi=$params->get( 'konteynertipi' );
  121.    
  122.     if($konteynertipi)
  123.     $geshi->set_header_type(GESHI_HEADER_DIV);
  124.     else
  125.     $geshi->set_header_type(GESHI_HEADER_PRE);
  126.    
  127.     if($params->get( 'cssstil' ))
  128.         $geshi->set_overall_style($params->get( 'cssstil' ));
  129.    
  130.     // renklendirme işleminin gerçekleştirilmesi
  131.     $text = $geshi->parse_code();
  132.  
  133.     $text = str_replace("\n", '<br />', $text);
  134.  
  135.     //normal \n leri göstermek için
  136.     $text = str_replace('\n', '\n', $text);
  137.    
  138.     return $text;
  139.   }
  140.  
  141. }

hazirprogramkod.xml dosyası eklentinin Joomla sistemlerine kurulabilmesi için gerekli dosyadır. İçerisinde eklenti ile ilgili özellikler ve tanımlamalar mevcuttur.

hazirprogramkod.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <install version="1.5" type="plugin" group="content">
  3.   <name>HazirProgramKod kod renklendirici</name>
  4.   <author>Şevket Umut ÇAKIR</author>
  5.   <creationDate>2009-01-01</creationDate>
  6.   <copyright>Copyright</copyright>
  7.   <license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL</license>
  8.   <authorUrl>www.pcprogramlama.com</authorUrl>
  9.   <authorEmail> Bu e-posta adresini spambotlara karşı korumak için JavaScript desteğini açmalısınız </authorEmail>
  10.   <version>1.0</version>
  11.   <description>Aciklama</description>
  12.   <languages>
  13.    <language tag="tr-TR">language/tr-TR/tr-TR.plg_content_hazirprogramkod.ini</language>
  14.    <language tag="en-GB">language/en-GB/en-GB.plg_content_hazirprogramkod.ini</language>
  15.     </languages>
  16.   <files>
  17.     <filename plugin="hazirprogramkod">hazirprogramkod.php</filename>
  18.   </files>
  19.   <params>
  20.     <param name="cssstil" type="textarea" cols="30" rows="5" default="width:500px;margin: 2px 0px 2px 0px;padding: 10px 10px 10px 10px;border: 1px dotted #aab4be;border-left: 20px solid #b4b4b4;background: #f4f5f6;font-size: 90%;overflow: auto;white-space: nowrap;" size="40" label="CSS Stili" description="Css Stili Aciklama" />
  21.    <param name="konteynertipi" type="list" default="0" label="Konteyner Tipi" description="Konteyner Tipi Aciklama">
  22.      <option value="0">DIV</option>
  23.      <option value="1">PRE</option>
  24.    </param>
  25.   </params>
  26. </install>
  27.  

Eklentinin çoklu dil desteği olması için aşağıdaki 2 dosya oluşturulmuştur. Dil dosyalarının tanımlamaları hazirprogramkod.xml dosyasının içindedir.

tr-TR.plg_content_hazirprogramkod.ini

  1. CSS STILI=CSS Stili
  2. CSS STILI ACIKLAMA=Kodlar gösterilirken, kod elemanına uygulanacak CSS stili
  3. KONTEYNER TIPI=Konteyner Tipi
  4. ACIKLAMA=<a href="http://www.pcprogramlama.com" target="_blank" title="www.pcprogramlama.com"><strong>www.pcprogramlama.com</strong></a> kod renklendirici(code syntax highlighter) <br> <p>Yazar: <a href="mailto: Bu e-posta adresini spambotlara karşı korumak için JavaScript desteğini açmalısınız ">Şevket Umut ÇAKIR</a></p> <br> <p><strong>Açıklama :</strong> HazirProgramKod kod renklendiricisi Joomla ile kurulu gelen Geshi kod renklendirici(syntax highlighter) paketini kullanır.HazirProgramKod mambotu Joomla ile tanımlı gelen paketten farklı olarak kod renklendirme yaparken "{" "}" parantezlerininin kullanımına izin verir.Joomla ile varsayılan olarak gelen TinMCE WYSIWYG editöründe sorunsuzca kullanılabilir.</p> <p>Bu program GNU/LGPL lisansı altındadır.</p> <div> <strong>Diller :</strong> </div> <div> Joomla paketinin içinde gelen tanımlı diller şunlardır: css,html,ini,javascript,mysql,php,sql,xml </div> <div> Extradan diller eklemek isterseniz (Örneğin C++, Java vs.) Geshi projesninin sayfasından indirdiğiniz proje dosyasındaki dilleri siteniz altındaki libraries\geshi\geshi altına yükleyebilirsiniz. </div> <div> Kullandığınız için teşekkürler. </div> <p><strong>Kullanımı :</strong></p> <div style="width: 382px; height: 100px; background-color:#FFFFEE;"> <p>{HazirProgramKod dil="cpp" satirlar="var"}</p> <p><em>// Kodunuz buraya gelecek</em></p> <p>{/HazirProgramKod}</p> </div>
  5. KONTEYNER TIPI ACIKLAMA=Bu özellik renklendirilen kodların konteyner(container) tipini belirler.Tipler div ve pre html elemanlarıdır.
  6. COPYRIGHT=Copyright (C) 2009 www.pcprogramlama.com Tüm hakları saklıdır.

en-GB.plg_content_hazirprogramkod.ini

  1. CSS STILI=CSS Style
  2. CSS STILI ACIKLAMA=CSS style to be applied to codes when showing codes.
  3. KONTEYNER TIPI=Container Type
  4. ACIKLAMA=<a href="http://www.pcprogramlama.com" target="_blank" title="www.pcprogramlama.com"><strong>www.pcprogramlama.com</strong></a> kod renklendirici(code syntax highlighter) <br> <p>Author: <a href="mailto: Bu e-posta adresini spambotlara karşı korumak için JavaScript desteğini açmalısınız ">Şevket Umut ÇAKIR</a></p> <br> <p><strong>Description  :</strong> HazirProgramKod code syntax highlighter uses Geshi syntax highlighter which is installed in Joomla by default.HazirProgramKod plugin, allows usage of "{" "}" brackets unlike Joomla default syntax highlighter.HazirProgramKod plugin can be easily used with TinMCE WYSIWYG which is installed in Joomla by default.</p> <p>This program is licensed under GNU/LGPL.</p> <div> <strong>Programming Languages :</strong> </div> <div> Here are the programming languages which Geshi can highlight with default Joomla installation: css,html,ini,javascript,mysql,php,sql,xml </div> <div> If you wish to install some extra programming languages (e.g. c++, java, etc.), you can install language code files,which you can find at the web page of Geshi project, to libraries\geshi\geshi directory.</div> <div> Thanks for using this plugin.</div> <p><strong>Usage :</strong></p> <div style="width: 382px; height: 100px; background-color:#FFFFEE;"> <p>{HazirProgramKod dil="cpp" satirlar="var"}</p> <p><em>// Write your code here.</em></p> <p>{/HazirProgramKod}</p> </div>
  5. KONTEYNER TIPI ACIKLAMA=This property specifies the container type of highlighted codes.Types are div and pre html tags.
  6. COPYRIGHT=Copyright (C) 2009 www.pcprogramlama.com All rights reserved.
  7.  

Eklentinin Joomla 1.5 sistemlerine kurulabilir halini aşağıdaki linkten bilgisayarınıza indirebilirsiniz.

Linki Görebilmeniz İçin Üye Olmanız Gerekmektedir...

Üye Kayıt

Yorumlar (2)
  • gokhan  - kullanamadım
    kurulumda herhangi bir problem yok fakat uygulama aşamasında bir sonuç alamadım. örnek sayfa: http://www.gokhanca.com/index.php?option=com_content&view=article&id=52:asal-saymlma-program&catid=25:c-nekleri&Itemid=32
  • NEO  - Başarmışşın
    avatar
    Baktım ben sitene biraz geç oldu yorum bileşeni ile ilgili sıkıntılardan dolayı çözünce gördüm, sitene de baktım yapmışsın :)
Sadece kayıtlı kullanıcılar yorum yazabilir!
Son Güncelleme ( Cuma, 08 Nisan 2011 00:28 )