Hi Anoop,

I am not averse to your work going in the theme code directly although there are a few interesting things that you could learn through separating out the code. One place that we consider to be a bit more out of bounds is the trac directory so we may need to find a way of implementing the changes to trac/trac/wiki/web_ui.py elsewhere.

So the deal with plugins is that there are a number of interfaces that Trac and Bloodhound provide in order to let code implement add extra or effectively modify existing behaviour. With a quick look at your trac code changes I would guess that it would be possible to do what you need in a post_process_request method which is part of the IRequestFilter interface. There is already a post_process_request method in bloodhound_theme/bhtheme/theme.py in the BloodhoundTheme class for example. Note that you are able to manipulate the 'data' dictionary there too.

Cheers,
    Gary

On 17/09/13 15:43, Anoop Nayak wrote:
Hi Gary,

I was working with the trunk till now. I'm trying to get it running on the
amazon server which i just signed up for(free tier). Could you explain more
about the plugins? I didnt quite get it. Currently I just modified some of
the files in trac and bloodhound to get the basic editor working up. It
currently highlights only the text formatting, links and headings. I will
just paste the patch below.
There are two external files which I had to place in the
bloodhound_dashboard/bhdashboard/htdocs/css and trac/trac/htdocs/js. The
codemirror.js and wikimarkup.js are placed in the latter and the
codemirror.css and wikimarkup.css are placed in the former. This was
because i couldn't get the css files loaded when places in the latter
directory i.e the common directory for trac.

I would like to have more information on how to proceed from here. The
patch i made is as follows:



Index: bloodhound_theme/bhtheme/templates/bh_wiki_edit.html
===================================================================
--- bloodhound_theme/bhtheme/templates/bh_wiki_edit.html (revision 1523937)
+++ bloodhound_theme/bhtheme/templates/bh_wiki_edit.html (working copy)
@@ -54,10 +54,16 @@
          }).get(0).scrollTop = $("#scroll_bar_pos").val();
          $("#editrows").change(function() {
            resizeTextArea("text", this.options[this.selectedIndex].value);
+          <py:if test="livesyntaxhighlight">/*<![CDATA[*/
+          editor.setSize(window.twidth,
this.options[this.selectedIndex].value*13);
+          </py:if>
          });
          $("#sidebyside").change(function() {
            $("#edit input[type=submit][name=preview]").click();
          });
+        $("#livesyntaxhighlight").change(function(){
+          $("#edit input[type=submit][name=preview]").click();
+        });
          <py:if test="not sidebyside and (action == 'preview' or diff)">
            $("#info").scrollToTop();
          </py:if>
@@ -89,6 +95,34 @@
            autoResizeText();
            $(window).resize(autoResizeText);
          /*]]>*/</py:if>
+        <py:if test="livesyntaxhighlight">/*<![CDATA[*/
+          window.twidth = $('#text').width();
+          window.theight = $('#text').height();
+          console.log($('#text').width() + ' '+ $('#text').height());
+          window.editor =
CodeMirror.fromTextArea(document.getElementById("text"), {
+                lineNumbers: true,
+                matchBrackets: true,
+                continueComments: "Enter",
+                extraKeys: {"Ctrl-Q": "toggleComment"}
+            });
+          resizeCodeMirror()
+          editor.refresh();
+          function resizeCodeMirror(){
+            console.log($('#text').width() + ' '+ $('#text').height());
+            var editor = window.editor;
+            var spanwidth = $('.span12').width()/2 - 15;
+            var cmwidth = window.twidth;
+            if ($('.span12').width() > 688 &&
document.getElementById('sidebyside').checked)
+              cmwidth = spanwidth;
+            else cmwidth = 2 * (spanwidth +15);
+            var cmheight = $('#text').height();
+            // if(document.getElementById('preview'))
+            //   cmheight = $('#preview').height();
+            editor.setSize(cmwidth, cmheight);
+            editor.refresh();
+          }
+          $(window).resize(resizeCodeMirror);
+        /*]]>*/</py:if>
          <py:if test="sidebyside and not diff">
            $("#text").autoPreview("${href.wiki_render()}", {
                realm: "${page.resource.realm}", id: "${page.resource.id}"
Index: bloodhound_theme/bhtheme/templates/bh_wiki_edit_form.html
===================================================================
--- bloodhound_theme/bhtheme/templates/bh_wiki_edit_form.html (revision
1523937)
+++ bloodhound_theme/bhtheme/templates/bh_wiki_edit_form.html (working copy)
@@ -46,6 +46,11 @@
            Edit side-by-side
            <input type="checkbox" name="sidebyside" id="sidebyside"
checked="$sidebyside" />
          </label>
+        <label for="livesyntaxhighlight" class="pull-right" title="Enable
the new Live Syntax Highlighting mode">
+          Enable Live Syntax Highlighting(Alfa)
+          <input type="checkbox" name="livesyntaxhighlight"
id="livesyntaxhighlight" checked="$livesyntaxhighlight" />
&nbsp;&nbsp;&nbsp;
+        </label>
+
          <br/>
        </div>
        <p><textarea id="text" class="wikitext${' trac-resizable' if not
sidebyside else None}"
Index: trac/trac/wiki/web_ui.py
===================================================================
--- trac/trac/wiki/web_ui.py (revision 1523937)
+++ trac/trac/wiki/web_ui.py (working copy)
@@ -504,14 +504,18 @@
          author = get_reporter_id(req, 'author')
          defaults = {'editrows': 20}
          prefs = dict((key, req.session.get('wiki_%s' % key,
defaults.get(key)))
-                     for key in ('editrows', 'sidebyside'))
+                     for key in ('editrows', 'sidebyside',
'livesyntaxhighlight'))

          if 'from_editor' in req.args:
              sidebyside = req.args.get('sidebyside') or None
              if sidebyside != prefs['sidebyside']:
                  req.session.set('wiki_sidebyside', int(bool(sidebyside)),
0)
+            livesyntaxhighlight = req.args.get('livesyntaxhighlight') or
None
+            if livesyntaxhighlight != prefs['livesyntaxhighlight']:
+                req.session.set('wiki_livesyntaxhighlight',
int(bool(livesyntaxhighlight)), 0)
          else:
              sidebyside = prefs['sidebyside']
+            livesyntaxhighlight = prefs['livesyntaxhighlight']

          if sidebyside:
              editrows = max(int(prefs['editrows']),
@@ -525,12 +529,19 @@
              else:
                  editrows = prefs['editrows']

+        if livesyntaxhighlight:
+            add_script(req, 'common/js/codemirror.js')
+            # had to put css in dashboard css folder as it was not
detecting in the common folder
+            add_stylesheet(req, 'dashboard/css/codemirror.css')
+            add_script(req, 'common/js/wikimarkup.js')
+            add_stylesheet(req, 'dashboard/css/wikimarkup.css')
+
          data = self._page_data(req, page, action)
          context = web_context(req, page.resource)
          data.update({
              'author': author,
              'comment': comment,
-            'edit_rows': editrows, 'sidebyside': sidebyside,
+            'edit_rows': editrows, 'sidebyside': sidebyside,
'livesyntaxhighlight': livesyntaxhighlight,
              'scroll_bar_pos': req.args.get('scroll_bar_pos', ''),
              'diff': None,
              'attachments':
AttachmentModule(self.env).attachment_data(context),



On Tue, Sep 17, 2013 at 3:17 PM, Gary Martin <[email protected]>wrote:

Anoop,

A little off topic but have you tested your svn access yet? I can't see a
branch for your work yet so, on the assumption that you need a full copy of
bloodhound to play with, if you have the normal command line svn client
installed you should be able to do something like this:

svn cp 
https://svn.apache.org/repos/**asf/bloodhound/trunk<https://svn.apache.org/repos/asf/bloodhound/trunk>\
https://svn.apache.org/repos/**asf/bloodhound/branches/**
livesyntaxhighlighting<https://svn.apache.org/repos/asf/bloodhound/branches/livesyntaxhighlighting>\
     -m "creating branch for live syntax highlighting ASF-ICFOSS project"

If that works then you should then be able to check out the code with:

svn co https://svn.apache.org/repos/**asf/bloodhound/branches/**
livesyntaxhighlighting<https://svn.apache.org/repos/asf/bloodhound/branches/livesyntaxhighlighting>

and you will then be able to write your code in that branch.

I'll not try to guess your level of expertise in using subversion so if
you need any help, let us know and we can give bits of advice and point you
towards appropriate documentation. You will probably also want to know how
to create a plugin for your work to go in - we have a number of examples of
plugins that will be in the branch that you create, each of which are named
like bloodhound_[something].

You can also use Antonia's GSoC project as a guide. That will not be in
your branch though you can find it here:

    https://svn.apache.org/repos/**asf/bloodhound/branches/bep_**
0007_embeddable_objects/<https://svn.apache.org/repos/asf/bloodhound/branches/bep_0007_embeddable_objects/>

and you can see that Antonia called her plugin
"bloodhound_embedding_plugin" which has all (or at least the vast majority)
of her code in.

Again, please ask whenever you find that there is not enough information
on things.

Cheers,
     Gary



On 13/09/13 06:37, Anoop Nayak wrote:

Thanks Joe. I will try posting the question in a more specific way soon.



On Thu, Sep 12, 2013 at 11:52 PM, Joachim Dreimann <
[email protected]> wrote:

  Anoop,
if you don't receive any responses here, please do get in touch with the
CodeMirror community. They may be in a better position to help in your
current situation:
http://codemirror.net/#**community <http://codemirror.net/#community>

Alternatively, lease let us know what your latest progress is and if you
can figure out a more specific problem that blocks you from progressing.
"I can't understand how the code is working around why it is written in
that way." - That seems too generic for anyone here to really answer.

Cheers,
Joe


On 6 September 2013 16:20, Anoop Nayak <[email protected]> wrote:

  Hi devs,

I tried looking at the CodeMirror <http://codemirror.net/> project and
I
figured out that I need to write a new
mode<http://codemirror.net/**doc/manual.html#modeapi<http://codemirror.net/doc/manual.html#modeapi>>
for
codemirror which can highlight WikiMarkup. And there is already a mode

for

tikiMarkup 
<https://doc.tiki.org/Wiki-**Syntax+Text<https://doc.tiki.org/Wiki-Syntax+Text>>
which is another Wiki
style language as found here
https://github.com/marijnh/**CodeMirror/tree/master/mode/**tiki<https://github.com/marijnh/CodeMirror/tree/master/mode/tiki>.
But I can't
understand how the code is working around why it is written in that way.
The next option is to start from scratch which again will consume more

time

as I need to learn how a syntax highlighter works and an optimal
solution
to it. And so in the process I was trying to understand by the example

of a

mode given by the creator of the project itself in here
http://marijnhaverbeke.nl/**blog/codemirror-mode-system.**html<http://marijnhaverbeke.nl/blog/codemirror-mode-system.html>.
But again I

am

not able to relate it with the tikimarkup mode.

Could anybody guide me on how to proceed with making a new mode.

Awaiting a reply soon.

Regards,

--
Anoop Nayak


--
Joachim Dreimann | *User Experience Manager*

WANdisco // *Non-Stop Data*

e. [email protected]
twitter @jdreimann <https://twitter.com/jdreimann**>





Reply via email to