Add filetype to list in FileSystem Directory View.

Recently I have added flv file in product skin directory and register flv extension to MIME type registry but it wasn’t listing in product skin directory in ZMI. I was wondering what I was missing after a bit digging I workaround one patch which need to apply at CMFCore/FSFile.py

Basically file extention need to be register in FSFile type.

FSFile.py

registerFileExtension('doc', FSFile)
registerFileExtension('txt', FSFile)
registerFileExtension('pdf', FSFile)
registerFileExtension('flv', FSFile)
registerFileExtension('swf', FSFile)
registerFileExtension('jar', FSFile)
registerFileExtension('cab', FSFile)
registerFileExtension('ico', FSFile)
registerFileExtension('js', FSFile)
registerFileExtension('css', FSFile)
registerMetaType('File', FSFile)

Simple Flatpage Navigation Items

Flatpages are great for simple html content. However, I wanted some way to associate a navigation menu (just a snippet of HTML) with one or more FlatPage objects. Additionally, I wanted to be able to edit these throught the Admin. This is the best solution I found on django snippets.

# models.py

from django.db import models
from django.contrib.flatpages.models import FlatPage

class FlatpageNav(models.Model):
    '''
    A simple snippet of HTML that can be associated with multiple FlatPages.
    '''
    flatpages = models.ManyToManyField(FlatPage, \
        help_text='Select the Flatpages that should display this menu')
    name = models.CharField(max_length=255, \
# models.py

from django.db import models
from django.contrib.flatpages.models import FlatPage

class FlatpageNav(models.Model):
    '''
    A simple snippet of HTML that can be associated with multiple FlatPages.
    '''
    flatpages = models.ManyToManyField(FlatPage, \
        help_text='Select the Flatpages that should display this menu')
    name = models.CharField(max_length=255, \
        help_text='A name for this menu. This is not displayed on the FlatPage.')
    menu = models.TextField(help_text='Enter an HTML snippet for the menu.')

    def __unicode__(self):
        return u"%s"%self.name

# admin.py
from models import FlatpageNav
from django.contrib import admin

class FlatpageNavAdmin(admin.ModelAdmin):
    list_display = ('name', )

admin.site.register(FlatpageNav, FlatpageNavAdmin)

# Then, in your Flatpage default template, add the following:
    {% if flatpage.flatpagenav_set.count %}
        {% for nav in flatpage.flatpagenav_set.all %}
            {{ nav.menu|safe }}
        {% endfor %}
    {% else %}
         {# Include an alternative menu. #}
        {% include "flatpages/menu.html" %}
    {% endif %}
        help_text='A name for this menu. This is not displayed on the FlatPage.')
    menu = models.TextField(help_text='Enter an HTML snippet for the menu.')

    def __unicode__(self):
        return u"%s"%self.name

# admin.py
from models import FlatpageNav
from django.contrib import admin

class FlatpageNavAdmin(admin.ModelAdmin):
    list_display = ('name', )

admin.site.register(FlatpageNav, FlatpageNavAdmin)

# Then, in your Flatpage default template, add the following:
    {% if flatpage.flatpagenav_set.count %}
        {% for nav in flatpage.flatpagenav_set.all %}
            {{ nav.menu|safe }}
        {% endfor %}
    {% else %}
         {# Include an alternative menu. #}
        {% include "flatpages/menu.html" %}
    {% endif %}

How to make Indian Chicken Biryani (Chicken Rice)

I have recently share my lunch with my friend and he like so much that he ask me to share the recipe with hiChicken Biryanim so I though to write down here and share with him. So here is quick brief.

First,In the pot put the 2 cup of basmati rice with 4 cup of water in it with two tea spoon of salt. I usually add two to three cardamom for nice smell and boil this rice for 5 min. Keep the rice a bit uncooked which will be cooked again with chicken curry.

Now chop the onion and fry the onion until it become brown. add chopped garlic and ginger in it.I prefer to use fresh garlic and ginger.  Portion of garlic should be 4 tea spoon and portion of ginger is 2 tea spoon. After 10 min of frying this paste add 3 chopped tomatoes  in it. Fry this paste for 10 minute. now it’s time to add all spices in it. I usually add 1 tea spoon chili powder,  salt according to your taste (I need 2 tea spoon), 2 tea spoon coriander powder, 1/2 spoon turmeric power, 4 to 5 cloves, 4 to 5 black peppercorns.1 to 2 Bay leaves (tej patta), 2 to 3 small piece of cassia sticks. you can choose the quantity the spices according to your taste. Mix paste very well and fry it for 10-15 min.

Add chicken (1 kg) in this paste. I hope you have very well wash this chicken piece before adding it in to the paste.Stir this paste every 5 to 7 minute and cook for 20-25 minute. Once you happy that chicken is properly cooked add the rice on the top of this paste and close the pot for 10-15 minute. Check that steam is coming up from the rice and its done.

Website got Facelift

Since long time, I was thinking to change the theme of website as it was very black and white before. So I have had decided to put some color in it. I have chosen ‘Arclite‘ theme which is highly styled among the word press theme.

Personally, I like the texture and color selection of the style. Specially on the heading tag.

Tag Cloud for Plone 3

I was building new site using Plone 3.1.7. I had to install tag cloud for the site and I couldn’t find any add-on product that I can use for this version. So decided to use TagCloudxplorer product by applying small patches for making it compatible to Plone 3.

Product:

Dependencies

After copying this two products in Plone product directory which is generally (path_to_plone_instance /data/products/). Open install.py which is resting at Data\Products\TagCloudExplorer\Extensions\

Search for below code under install definition.

addPortlet(self, outStream)

and comment it out because Plone 3 got different portlet layout which is no longer use classic portlet used in Plone 2.After commenting out code definition of install method look like below.

def install(self) :
    outStream = StringIO()
    skinsTool = getToolByName(self, 'portal_skins')
    addDirectoryViews(skinsTool, 'skins', config.GLOBALS)
    installSubSkin(self, config.SKIN_NAME, outStream)
    #installSubSkin(self, config.SKIN_OVERLOAD_NAME, outStream)
    addTool(self, outStream)
    #addPortlet(self, outStream)
    #addActionProvider(self)
    setupCSS(self, outStream)
    installConfiglet(self, outStream)
    addCacheManager(self, outStream)
    return outStream.getvalue()

This portlet need to add in Plone 3 portlet column. Navigate to to section where you would like add this portlet and click then manage portlets. you can manage portlet by placing “@@manage-portlets” at end of the URL in the browser. Add classic portlet on right or left column.

Give template name portlet_tag_cloud_explorer and portlet as a macro name to custom classic portlet.

TagCloudExplorer provide a configuration page available from the control panel. Mainly I use allowed stated Published with exponential method with min 1, max 4 and size 10 as tags scale mapping.