Merge with 47e355c1c5e1b8adbd523a6fecc6b2f970458208
authorymh <ymh.work@gmail.com>
Thu, 23 Sep 2010 18:21:16 +0200
changeset 73 e85372c06f21
parent 72 d672f33a3a67 (diff)
parent 70 47e355c1c5e1 (current diff)
child 74 fa03084f5fea
Merge with 47e355c1c5e1b8adbd523a6fecc6b2f970458208
Binary file web/franceculture/locale/fr/LC_MESSAGES/django.mo has changed
--- a/web/franceculture/locale/fr/LC_MESSAGES/django.po	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/locale/fr/LC_MESSAGES/django.po	Thu Sep 23 18:21:16 2010 +0200
@@ -30,11 +30,11 @@
 
 #: templates/base.html:46
 msgid "indexation projects"
-msgstr "Créer un projet"
+msgstr "Projets d'indexation"
 
 #: templates/base.html:47
 msgid "accounts"
-msgstr "Créer un compte"
+msgstr "Liste des comptes"
 
 #: templates/base.html:48
 msgid "Profiles"
@@ -86,7 +86,7 @@
 #: templates/franceculture/partial/contentslist.html:21
 #: templates/ldt/ldt_utils/create_content.html:61
 msgid "Create content"
-msgstr "Créer un compte"
+msgstr "Créer un Contenu"
 
 #: templates/franceculture/partial/projectslist.html:14
 msgid "Project published, click to unpublish"
@@ -109,7 +109,6 @@
 msgstr "Ouvrir le lecteur augmenté"
 
 #: templates/franceculture/partial/projectslist.html:31
-#, fuzzy
 msgid "Create project"
 msgstr "Créer un projet"
 
@@ -134,7 +133,6 @@
 
 
 #: templates/ldt/ldt_utils/create_ldt.html:23
-#, fuzzy
 msgid "Create your project"
 msgstr "Créer un projet"
 
--- a/web/franceculture/templates/base.html	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/templates/base.html	Thu Sep 23 18:21:16 2010 +0200
@@ -42,10 +42,10 @@
 				{% url ldt.user.views.profile  as profile_url %}
 				    <ul class="tabs">
 						<li class='{% active request "active" workspace_url %}'><a href="{{ workspace_url }}" >{% trans "home" %}</a></li>
-						<li class='{% active request "active" content_url %}'><a href="{{ content_url }}">{% trans "contents" %}</a></li>
+						<!--li class='{% active request "active" content_url %}'><a href="{{ content_url }}">{% trans "contents" %}</a></li>
 						<li class='{% active request "active" space_url %}'><a href="{{ space_url }}">{% trans "indexation projects" %}</a></li>
 						<li class='{% active request "active" "" %}'><a href="#">{% trans "accounts" %}</a></li>
-			            <li class='{% active request "active" profile_url %}'><a href="{{ profile_url }}" >{% trans "Profiles" %}</a> </li>
+			            <li class='{% active request "active" profile_url %}'><a href="{{ profile_url }}" >{% trans "Profiles" %}</a> </li-->
 				    </ul>
 				{% endif %}
 				</div>
--- a/web/franceculture/templates/franceculture/partial/contentslist.html	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/templates/franceculture/partial/contentslist.html	Thu Sep 23 18:21:16 2010 +0200
@@ -10,7 +10,7 @@
 		<tr class="imageline {% cycle 'projectscontentsoddline' 'projectscontentsevenline'%}">
 		    <td class="cellimg"><div class="cellimgdiv"><img src="{{MEDIA_URL}}/img/document_add.gif" title="{% trans 'create project' %}" alt="{% trans 'create project' %}" href="{% url ldt.ldt_utils.views.create_project content.iri_id %}" class="ldt_link_create"/></div></td>
 		    <td class="cellimg"><div class="cellimgdiv"><img  alt="{% trans 'preview media'%}" title="{% trans 'preview media'%}" src="{{MEDIA_URL}}/img/control_play.gif" href="{% url ldt.ldt_utils.views.index content.iri_id %}" class="ldt_link"/></div></td>
-		    <td class="contenttitle"><a class="contenttitlelink" href="{% url ldt.ldt_utils.views.write_content id=content.id %}">{{ content.title }}</a></td>
+		    <td class="contenttitle"><a class="contenttitlelink" href="{% url ldt.ldt_utils.views.write_content iri_id=content.iri_id %}">{{ content.title }}</a></td>
 		</tr>
 	{% endfor %}
 		</tbody>
--- a/web/franceculture/templates/franceculture/workspace.html	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/templates/franceculture/workspace.html	Thu Sep 23 18:21:16 2010 +0200
@@ -12,12 +12,15 @@
 <script type="text/javascript">
 
 var content_filter_url = "{% url franceculture.views.contentsfilter filter='__FILTER__' %}";
-var project_filter_url = "{% url franceculture.views.projectsfilter filter='__FILTER__' is_owner='false' %}";
+var project_filter_url = "{% url franceculture.views.projectsfilter filter='__FILTER__' is_owner='false' status='0' %}";
+var publish_project_url = "{% url ldt.ldt_utils.views.publish '__PROJECT_ID__' 'false' %}";
+var unpublish_project_url = "{% url ldt.ldt_utils.views.unpublish '__PROJECT_ID__' 'false' %}";
+
 
 function init_events(base_node) {
 
-	init_events_contents(base_node, "{% url franceculture.views.popup_embed %}");
-			
+	init_events_all(base_node, "{% url franceculture.views.popup_embed %}", content_filter_url, project_filter_url, publish_project_url, unpublish_project_url);
+
 }
 
 $(document).ready(function(){	
--- a/web/franceculture/templates/ldt/ldt_utils/content_list.html	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/templates/ldt/ldt_utils/content_list.html	Thu Sep 23 18:21:16 2010 +0200
@@ -14,7 +14,7 @@
 
 function init_events(base_node) {
 
-	init_events_contents(base_node, "{% url franceculture.views.popup_embed %}");		
+	init_events_contents(base_node, "{% url franceculture.views.popup_embed %}", content_filter_url);		
 }
 
 $(document).ready(function(){
--- a/web/franceculture/templates/ldt/ldt_utils/create_content.html	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/templates/ldt/ldt_utils/create_content.html	Thu Sep 23 18:21:16 2010 +0200
@@ -74,6 +74,8 @@
 		<div>{{ content_form.videopath.errors }}{{ content_form.videopath.label_tag }}{{content_form.videopath}}</div>
 		<div>{{ content_form.title.errors }}{{ content_form.title.label_tag }}{{content_form.title}}</div>
 		<div>{{ content_form.description.errors }}{{ content_form.description.label_tag }}{{content_form.description}}</div>
+		<div>{{ media_form.external_id.errors }}{{ media_form.external_id.label_tag }}{{media_form.external_id}}</div>
+		<div>{{ media_form.external_publication_url.errors }}{{ media_form.external_publication_url.label_tag }}{{media_form.external_publication_url}}</div>
 	</div>
 	<div id="contentright" class="span-9 last" >
 		<div>{{ content_form.external_id.errors }}{{ content_form.external_id.label_tag }}{{content_form.external_id}}</div>
--- a/web/franceculture/templates/ldt/ldt_utils/ldt_list.html	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/templates/ldt/ldt_utils/ldt_list.html	Thu Sep 23 18:21:16 2010 +0200
@@ -11,7 +11,7 @@
 {{block.super}}
 <script type="text/javascript">
 
-searchprojectfilterurl = "{% url franceculture.views.projectsfilter filter='__FILTER__' is_owner='true' %}";
+searchprojectfilterurl = "{% url franceculture.views.projectsfilter filter='__FILTER__' is_owner='true' status='0' %}";
 publishprojecturl = "{% url ldt.ldt_utils.views.publish '__PROJECT_ID__' 'false' %}";
 unpublishprojecturl = "{% url ldt.ldt_utils.views.unpublish '__PROJECT_ID__' 'false' %}";
 
--- a/web/franceculture/urls.py	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/urls.py	Thu Sep 23 18:21:16 2010 +0200
@@ -23,7 +23,7 @@
     (r'^accounts/', include('registration.backends.simple.urls')),
 
     url(r'^/?$', "franceculture.views.workspace", name="root-view"),
-    url(r'^filterprojects/(?P<filter>\w*)/(?P<is_owner>true|false)/$', "franceculture.views.projectsfilter", ),
+    url(r'^filterprojects/(?P<filter>\w*)/(?P<is_owner>true|false)/(?P<status>\d)$', "franceculture.views.projectsfilter", ),
     url(r'^filtercontents/(?P<filter>\w*)/$', "franceculture.views.contentsfilter", ),
     (r'^embedpopup/?$', "franceculture.views.popup_embed"),
 )
--- a/web/franceculture/views.py	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/franceculture/views.py	Thu Sep 23 18:21:16 2010 +0200
@@ -6,6 +6,7 @@
 from ldt.ldt_utils.models import Content, Project, Owner
 from ldt.ldt_utils.utils import boolean_convert
 from django.http import HttpResponseServerError
+from django.db.models import Q
 
 
 @login_required
@@ -15,7 +16,7 @@
     content_list = Content.objects.all()
 
     # get list of projects
-    project_list = Project.objects.filter(state=2)
+    project_list = Project.objects.all()
 
     # render list
     return render_to_response("franceculture/workspace.html", 
@@ -23,10 +24,12 @@
                               context_instance=RequestContext(request))
 
 @login_required
-def projectsfilter(request, filter, is_owner=False):
+def projectsfilter(request, filter, is_owner=False, status=0):
     
     project_list = None
     is_owner = boolean_convert(is_owner)
+    status = int(status)
+    query = Q()
     
     if is_owner:
         owner = None
@@ -34,14 +37,16 @@
             owner = Owner.objects.get(user=request.user)
         except:
             return HttpResponseServerError("<h1>User not found</h1>")
-
-        project_list = Project.objects.filter(owner=owner)
-    else:
-        project_list = Project.objects.filter(state=2)
+        query &= Q(owner=owner)
+        
+    if status > 0:
+        query &= Q(state=status)
     
     if filter:
-        project_list = project_list.filter(title__icontains=filter)
-        
+        query &= Q(title__icontains=filter)
+    
+    project_list =  Project.objects.filter(query)
+    
     return render_to_response("franceculture/partial/projectslist.html", 
                               {'projects': project_list},
                               context_instance=RequestContext(request))
@@ -49,6 +54,8 @@
 
 @login_required
 def contentsfilter(request, filter):
+    if filter == "_":
+        filter = ""
     if filter:
         content_list = Content.objects.filter(title__icontains=filter)
     else:
--- a/web/ldt/ldt_utils/models.py	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/ldt/ldt_utils/models.py	Thu Sep 23 18:21:16 2010 +0200
@@ -34,6 +34,29 @@
     title = models.CharField(max_length=1024, null=True, blank=True, verbose_name=_('title'))
     src = models.CharField(max_length=1024, unique=True, verbose_name=_('media.src'))
     
+    def stream_src():
+        
+        def fget(self):
+            res_src = self.src.rstrip()
+            if self.videopath and self.videopath.startswith("rtmp://"):
+                extension = res_src.split(".")[-1]
+                res_src = {
+                    'flv': lambda s: s,
+                    'mp3': lambda s: "%s:%s" %("mp3",res_src[:-4]),
+                    'mp4': lambda s: "%s:%s" %("mp4",res_src[:-4]),
+                    'f4v': lambda s: "%s:%s" %("mp4",res_src[:-4]),
+                }.get(extension, lambda s:s)(res_src)
+            return res_src
+        
+        return locals()
+    
+    stream_src = property(**stream_src())    
+    
+    def save(self, *args, **kwargs):
+        super(Media, self).save(*args, **kwargs)
+        for content in self.content_set.all():
+            content.sync_iri_file()
+    
     def __unicode__(self):
         strings = []
         if self.title:
@@ -44,6 +67,7 @@
             strings.append(unicode(self.external_id))
         return "|".join(strings)
 
+
 class Content(models.Model):
     iri_id = models.CharField(max_length=1024, unique=True, default=generate_uuid, verbose_name=_('content.iri_id'))
     iriurl = models.CharField(max_length=1024, verbose_name=_('content.iriurl'))
@@ -71,9 +95,7 @@
         writer.deleteDocuments(lucene.Term("iri_id", self.iri_id))
         writer.commit()
         
-    #TODO: better manage the change in .iri name and error scenario (save in temp file + rename
-    def save(self, *args, **kwargs):
-        
+    def sync_iri_file(self):
         # create iri file if needed
         created = False
         try:
@@ -95,6 +117,11 @@
                     os.remove(iri_file_path)
             raise e
         
+        
+    #TODO: better manage the change in .iri name and error scenario (save in temp file + rename
+    def save(self, *args, **kwargs):
+        
+        self.sync_iri_file()        
         # update it 
         super(Content, self).save(*args, **kwargs)
     
@@ -122,6 +149,18 @@
             return None
             
     
+    def stream_src():
+        
+        def fget(self):
+            if self.media_obj is not None:
+                return self.media_obj.stream_src
+            else:
+                return None
+        
+        return locals()
+    
+    stream_src = property(**stream_src())
+    
     def videopath(): #@NoSelf
         doc = """simulate videopath""" #@UnusedVariable
        
--- a/web/ldt/ldt_utils/urls.py	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/ldt/ldt_utils/urls.py	Thu Sep 23 18:21:16 2010 +0200
@@ -31,7 +31,7 @@
     urlpatterns += patterns('ldt.ldt_utils',
         url(r'^space/content/$', 'views.list_content'),
         url(r'^space/content/create/$', 'views.write_content'),
-        url(r'^space/content/update/(?P<id>\d+)$', 'views.write_content'),
+        url(r'^space/content/update/(?P<iri_id>[\w-]+)$', 'views.write_content'),
         url(r'^space/ldt/$', 'views.list_ldt'),
         url(r'^space/ldt/indexproject/(?P<id>.*)$', 'views.indexProject'),
         url(r'^space/ldt/init/(?P<method>.*)/(?P<url>.+)$', 'views.init', name='space_ldt_init'),
--- a/web/ldt/ldt_utils/utils.py	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/ldt/ldt_utils/utils.py	Thu Sep 23 18:21:16 2010 +0200
@@ -315,7 +315,7 @@
     writer.startElement(u"medias")
 
     writer.startElement(u"media", attributes={u'id':u'video'})
-    writer.simpleElement(u'video', attributes={u'src':unicode(content.src),u'id':unicode(content.iri_id),u'dur':unicode(content.duration),u'begin':u'0'})
+    writer.simpleElement(u'video', attributes={u'src':unicode(content.stream_src),u'id':unicode(content.iri_id),u'dur':unicode(content.duration),u'begin':u'0'})
     writer.endElement(u"media")
 
     writer.startElement(u"media", attributes={u'id':u'tool'})
@@ -361,7 +361,7 @@
     
     if len(res) > 0:
         video_node = res[0]
-        video_node.set(u'src', unicode(content.src))
+        video_node.set(u'src', unicode(content.stream_src))
         video_node.set(u'dur', unicode(content.duration))
         video_node.set(u'id', unicode(content.iri_id))
     # update video
--- a/web/ldt/ldt_utils/views.py	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/ldt/ldt_utils/views.py	Thu Sep 23 18:21:16 2010 +0200
@@ -369,12 +369,14 @@
     return render_to_response('ldt/ldt_utils/copy_ldt.html', {'form':form, 'project':project}, context_instance=RequestContext(request))
 
 
-def write_content_base(request, id=None):
+def write_content_base(request, iri_id=None):
 
-    if id:
-        instance_content = Content.objects.get(id=id)
-        instance_media = instance_content.media_obj 
+    if iri_id:        
+        instance_content = Content.objects.get(iri_id=iri_id)
+        instance_media = instance_content.media_obj
+        logging.debug("write_content_base : valid form: for instance : media -> " + repr(instance_media) + " content : for instance : " + repr(instance_content) ) 
     else:
+        logging.debug("No iri_id")
         instance_content = None
         instance_media = None
     
@@ -384,6 +386,9 @@
         media_form = MediaForm(request.POST, request.FILES, prefix="media", instance= instance_media)
         media_valid = media_form.is_valid()
         content_valid = content_form.is_valid()
+        
+        logging.debug("write_content_base : valid form: for instance : " + repr(instance_media) + " -> media " + str(media_valid) +" content : for instance : " + repr(instance_content) + " : " + str(content_valid))
+        
         if media_valid and content_valid :
             
             # see if media must be created
@@ -392,8 +397,6 @@
 
             media_input_type = content_form.cleaned_data["media_input_type"]
             
-            logging.debug("write_content_base : POST media_input_type:" + media_input_type)
-            
             if media_input_type == "none":
                 media = None
             elif media_input_type == "link":
@@ -488,17 +491,28 @@
             form_status = 'error'
     else:
         form_status = 'empty'
-        content_form = ContentForm(prefix="content", instance=instance_content)
+        initial = { 'media_input_type':"link"}
+        
+        content_form = ContentForm(prefix="content", instance=instance_content, initial = initial )
         media_form = MediaForm(prefix="media", instance=instance_media)
+        
+        if instance_content is not None:
+            content_form.media_input_type = "link"
     
     return content_form, media_form, form_status
 
 
-def write_content(request, id=None):
+def write_content(request, iri_id=None):
+    
+    logging.debug("write_content : " + str(iri_id) )
+    content_form, media_form, form_status = write_content_base(request, iri_id)
     
-    content_form, media_form, form_status = write_content_base(request, id)
+    if iri_id:
+        create_content_action =  reverse(write_content, kwargs={'iri_id':iri_id})
+    else:
+        create_content_action =  reverse(write_content)
     
-    return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'media_form': media_form,'form_status': form_status,'create_content_action': reverse(write_content)}, context_instance=RequestContext(request))
+    return render_to_response('ldt/ldt_utils/create_content.html', {'content_form': content_form, 'media_form': media_form,'form_status': form_status,'create_content_action': create_content_action}, context_instance=RequestContext(request))
 
 
     
\ No newline at end of file
Binary file web/ldt/locale/en/LC_MESSAGES/django.mo has changed
--- a/web/ldt/locale/en/LC_MESSAGES/django.po	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/ldt/locale/en/LC_MESSAGES/django.po	Thu Sep 23 18:21:16 2010 +0200
@@ -29,9 +29,8 @@
 msgstr ""
 
 #: ldt_utils/forms.py:44
-#, fuzzy
 msgid "content.media_input_type"
-msgstr "Documentation"
+msgstr "Media source type"
 
 #: ldt_utils/forms.py:44
 msgid "file_upload"
@@ -85,7 +84,7 @@
 #: ldt_utils/models.py:31
 #, fuzzy
 msgid "media.duration"
-msgstr "Documentation"
+msgstr "duration"
 
 #: ldt_utils/models.py:32
 msgid "media.creator"
@@ -127,18 +126,16 @@
 msgstr ""
 
 #: ldt_utils/models.py:55
-#, fuzzy
 msgid "content.description"
-msgstr "Login"
+msgstr "description"
 
 #: ldt_utils/models.py:57
 msgid "content.authors"
-msgstr ""
+msgstr "authors"
 
 #: ldt_utils/models.py:58
-#, fuzzy
 msgid "content.duration"
-msgstr "Documentation"
+msgstr "duration"
 
 #: ldt_utils/models.py:209
 msgid "created by"
@@ -173,20 +170,18 @@
 
 #: ldt_utils/templates/ldt/ldt_utils/content_list.html:59
 msgid "Contents"
-msgstr ""
+msgstr "Contents"
 
 #: ldt_utils/templates/ldt/ldt_utils/content_list.html:63
-#, fuzzy
 msgid "Create new content"
-msgstr "Create new project"
+msgstr "Create new content"
 
 #: ldt_utils/templates/ldt/ldt_utils/content_list.html:66
 msgid "Content"
-msgstr ""
+msgstr "Content"
 
 #: ldt_utils/templates/ldt/ldt_utils/content_list.html:70
 #: ldt_utils/templates/ldt/ldt_utils/content_list.html:77
-#, fuzzy
 msgid "create project"
 msgstr "Create new project"
 
@@ -204,9 +199,8 @@
 msgstr "Copy"
 
 #: ldt_utils/templates/ldt/ldt_utils/create_content.html:22
-#, fuzzy
 msgid "Create content"
-msgstr "create account"
+msgstr "Create content"
 
 #: ldt_utils/templates/ldt/ldt_utils/create_ldt.html:11
 msgid "Create your project"
Binary file web/ldt/locale/fr/LC_MESSAGES/django.mo has changed
--- a/web/ldt/locale/fr/LC_MESSAGES/django.po	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/ldt/locale/fr/LC_MESSAGES/django.po	Thu Sep 23 18:21:16 2010 +0200
@@ -30,7 +30,7 @@
 
 #: ldt_utils/forms.py:44
 msgid "content.media_input_type"
-msgstr "Documentation"
+msgstr "Source du média"
 
 #: ldt_utils/forms.py:44
 msgid "file_upload"
--- a/web/static/css/workspace.css	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/static/css/workspace.css	Thu Sep 23 18:21:16 2010 +0200
@@ -45,7 +45,7 @@
 }
 
 .searchclear {
- 	/*visibility: hidden;*/
+ 	display: none;
 	float: right;
 }
 
@@ -155,6 +155,7 @@
 .searchajaxloader {
 	display: none;
 	float: right;
+	z-index: +1;
 }
 
 a.content_link_create:link, a.content_link_create:visited,
--- a/web/static/js/projectscontents.js	Wed Sep 22 18:43:32 2010 +0200
+++ b/web/static/js/projectscontents.js	Thu Sep 23 18:21:16 2010 +0200
@@ -119,6 +119,9 @@
 	timeout = typeof(timeout) != 'undefined' ? timeout : 0;
 	var target = $(target);
 	
+	// remove all qtip
+	$(".qtip").remove();
+	
 	if(target.realVal().length > 0) {
 		target.nextAll(".searchclear").show();
 	}
@@ -130,6 +133,10 @@
 	target.attr('timer',setTimeout(function() {
 		target.next(".searchajaxloader").show();
 		target.nextAll(".searchclear").hide();
+		var realVal = target.realVal();
+		if(realVal.length == 0) {
+			realVal = "_";
+		}
 		url = url.replace('__FILTER__',escape(target.realVal()));
 		$(container_selector).load(url, null, function() {
 			target.next(".searchajaxloader").hide();
@@ -144,7 +151,7 @@
 };
 
 
-function init_events_contents(base_node, embed_url) {
+function init_events_contents(base_node, embed_url, content_filter_url) {
 
 	init_events_base(base_node, embed_url);
 	
@@ -193,6 +200,56 @@
 
 }
 
+function init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
+		
+	$('.publishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = unpublishprojecturl.replace('__PROJECT_ID__', project_id);
+		$.ajax({
+			url: url,
+			type: 'POST',
+			dataType: 'json',
+			success: function(json, textStatus, XMLHttpRequest){
+				if(json.res) {
+					searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+				}
+			}
+		});
+	});
+
+	$('.unpublishedproject', base_node).click(function(e) {
+		e.preventDefault();
+		var target = $(e.target);
+		var project_id = target.attr('id').replace('project_','');
+		var url = publishprojecturl.replace('__PROJECT_ID__', project_id);
+		$.ajax({
+			url: url,
+			type: 'POST',
+			dataType: 'json',
+			success: function(json, textStatus, XMLHttpRequest){
+				if(json.res) {
+					searchCallback($('#searchprojectsinput'), "#projectslistcontainer", searchprojectfilterurl, 0);
+				}
+			}
+		});
+	});
+
+}
+
+function init_events_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
+	
+	init_events_base(base_node, embed_url);
+	init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl);
+}
+
+function init_events_all(base_node, embed_url, searchcontentfilterurl, searchprojectfilterurl, publishprojecturl, unpublishprojecturl) {
+	
+	init_events_contents(base_node, embed_url, searchcontentfilterurl);
+	init_events_base_projects(base_node, embed_url, searchprojectfilterurl, publishprojecturl, unpublishprojecturl);	
+}
+
 
 
 function searchFieldInit(input_list_init) {
@@ -225,7 +282,7 @@
 	             box.toggleClass("searchfieldinput");
 	         }
 	     });
-	     
+	     	     
 	});
 
 	$.each(input_list_init, function(index, value) {
@@ -240,7 +297,6 @@
 		box.addClass("searchfieldinput");
 		box.blur();
 		box.keyup();
-		$(e.target).hide();
 	});
 	
 	$('.searchclear').each(function(i) {