Changeset 3219

Show
Ignore:
Timestamp:
2007-09-03 05:55:46 (1 year ago)
Author:
dcrowdy
Message:

Implemented meta tag removal

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • arkaiv/trunk/TODO

    r3214 r3219  
    11TODO 
     2 
     3Implement addition of ogg file tag information. 
    24 
    35Implement removal of meta tags from the head. 
  • arkaiv/trunk/arkaiv/controllers/page.py

    r3218 r3219  
    357357        print cliplist 
    358358        # Extract meta info from the head and add to database 
    359         metalist = parser.getheadinfofromcmml(newcmmlname) 
     359        parser = cmmlParser() 
     360        parser.setcmmlfilename(newcmmlname) 
     361        metalist = parser.getheadinfofromcmml() 
    360362        for metadict in metalist: 
    361363            metadict['headindex'] = headid 
     
    485487  
    486488        # Extract meta info from the head and add to database 
    487         metalist = parser.getheadinfofromcmml(newcmmlname) 
     489        parser = cmmlParser() 
     490        parser.setcmmlfilename(newcmmlname) 
     491        metalist = parser.getheadinfofromcmml() 
    488492        for metadict in metalist: 
    489493            metadict['headindex'] = headid 
     
    535539        return render('/help.mak') 
    536540 
    537  
     541    def deletemeta(self): 
     542        metaid = request.params['metaid'] 
     543        itemid = request.params['itemid'] 
     544        headid = request.params['headid'] 
     545        print "itemid is" + str(itemid) 
     546        model.deletemeta(metaid) 
     547        # easier to read meta info and add all in one go? 
     548        metalist = model.getmetasforhead(headid) 
     549        print metalist 
     550        # now write these back to the cmml file 
     551#        parser = ... 
     552        cmmlfile = model.getitemcmmlfile(itemid) 
     553        parser = cmmlParser() 
     554        parser.setcmmlfilename(cmmlfile) 
     555        parser.syncheadmetas(metalist) 
     556 
     557        redirect_to(action='displayitem', id=itemid, edit="yes") 
     558 
  • arkaiv/trunk/arkaiv/model/__init__.py

    r3218 r3219  
    611611    return resultsdict 
    612612 
     613def deletemeta(metaid): 
     614    meta_q = sac.query(Meta) 
     615    m = meta_q.get_by(ixm=metaid) 
     616    sac.session.delete(m) 
     617    sac.session.flush() 
     618    return 
     619 
  • arkaiv/trunk/arkaiv/model/cmmlparser.py

    r3217 r3219  
    109109 
    110110    def getheadinfofromcmml(self, cmmlfilename): 
    111         Etree = ElementTree 
    112         doc = Etree.parse(cmmlfilename) 
    113         root = doc.getroot() 
    114         head = root.getiterator('head') 
     111        """ given a cmmlfile, returns a list of the meta tags in the head 
     112 
     113        """ 
     114        #Etree = ElementTree 
     115        #doc = Etree.parse(cmmlfilename) 
     116        #root = doc.getroot() 
     117        head = self.root.getiterator('head') 
    115118        metalist = [] 
    116119        for h in head: 
     
    212215        return 
    213216 
     217#    def addheadmetas(metalist): 
     218#        root = self.doc.getroot() 
     219#        head = root.getiterator('head') 
     220#        for h in head: 
     221#            mlist = h.findall('meta') 
     222#            for m in mlist: 
     223#                h.remove(m) 
     224 
     225 
     226 
  • arkaiv/trunk/arkaiv/templates/displayitem.mak

    r3217 r3219  
    7878</script> 
    7979</td> 
     80<td> 
     81${ h.form(h.url(action='deletemeta'), multipart=True) } 
     82${ h.submit('Delete') } 
     83${ h.hidden_field('metaid', value=metainfo['ixm']) } 
     84${ h.hidden_field('itemid', value=c.itemid) } 
     85${ h.hidden_field('headid', value=c.headdict['ixh']) } 
     86${ h.end_form() }  
     87 
     88</td> 
    8089</tr>  
    8190% endfor 
     
    92101 
    93102<tr> 
    94   <td> ${ h.text_field('metaid', size=5) }</td> 
     103  <td>${ h.text_field('metaid', size=5) }</td> 
    95104  <td>${ h.text_field('metaname') }</td> 
    96105  <td>${ h.text_field('metacontent') }</td> 
     
    176185    <td>Start</td> 
    177186  <td>${ h.text_field('starttime', size=5) }</td> 
    178     <td>Desc</td> 
     187</tr> 
     188<tr> 
     189<td>Desc</td> 
    179190  <td> 
    180191  <input type="text" name="desc" size="20" onfocus="disableShortcuts()" onblur="enableShortcuts()" id="desc" /> 
     
    184195    <td>a_text</td> 
    185196  <td>${ h.text_field('a_text') }</td> 
     197</tr> 
     198<tr> 
    186199    <td>a_href</td> 
    187200  <td>${ h.text_field('a_href') }</td> 
  • arkaiv/trunk/data/templates/autohandler.py

    r3215 r3219  
    22UNDEFINED = runtime.UNDEFINED 
    33_magic_number = 2 
    4 _modified_time = 1188622693.334286
     4_modified_time = 1188780210.535383
    55_template_filename=u'/home/dcrowdy/src/working/test/arkaiv/trunk/arkaiv/templates/autohandler' 
    66_template_uri=u'/autohandler' 
     
    2020        # SOURCE LINE 5 
    2121        context.write(unicode( h.javascript_include_tag('/javascripts/effects.js', builtins=True) )) 
    22         context.write(u' \n\n    </head>\n    <body>\n<p class="header">\n<h1>Arkaiv</h1>\n<div id="navcontainer">\n<ul id="navlist">\n  <li>') 
     22        context.write(u' \n\n    </head>\n    <body onkeypress=\'keyPressed(event)\'>\n<p class="header">\n<h1>Arkaiv</h1>\n<div id="navcontainer">\n<ul id="navlist">\n  <li>') 
    2323        # SOURCE LINE 13 
    2424        context.write(unicode( h.link_to("All Items", h.url(action="mainpage")) )) 
     
    2828        context.write(u'</li>\n  <li>') 
    2929        # SOURCE LINE 15 
    30         context.write(unicode( h.link_to("Add annodex media", h.url(action="addannodexform")) )) 
     30        context.write(unicode( h.link_to("Add media", h.url(action="addannodexform")) )) 
     31        context.write(u'</li>\n  <li>') 
     32        # SOURCE LINE 16 
     33        context.write(unicode( h.link_to("Help", h.url(action="displayhelp")) )) 
    3134        context.write(u'</li>\n  <li><span class="searchpadding">\n') 
    32         # SOURCE LINE 17 
     35        # SOURCE LINE 18 
    3336        context.write(unicode( h.form(h.url(action='search'), multipart=True) )) 
    3437        context.write(u'\n') 
    35         # SOURCE LINE 18 
     38        # SOURCE LINE 19 
    3639        context.write(unicode( h.text_field('searchterms', value="Search") )) 
    3740        context.write(u' \n') 
    38         # SOURCE LINE 19 
     41        # SOURCE LINE 20 
    3942        context.write(unicode( h.end_form() )) 
    4043        context.write(u' \n  </span>\n  </li>\n</ul>\n</div>\n</p>\n\n        <!--div class="content"-->\n') 
    41         # SOURCE LINE 27 
     44        # SOURCE LINE 28 
    4245        context.write(unicode(next.body())) 
    4346        context.write(u'\n        <p class="footer">\n        </p>\n        <!--/div-->\n    </body>\n</html>\n\n') 
  • arkaiv/trunk/data/templates/displayitem.mak.py

    r3215 r3219  
    22UNDEFINED = runtime.UNDEFINED 
    33_magic_number = 2 
    4 _modified_time = 1188629045.883585
     4_modified_time = 1188822727.931701
    55_template_filename='/home/dcrowdy/src/working/test/arkaiv/trunk/arkaiv/templates/displayitem.mak' 
    66_template_uri='/displayitem.mak' 
     
    2828        c = context.get('c', UNDEFINED) 
    2929        # SOURCE LINE 1 
    30         context.write(u' \n<div id="video">\n<p id="edititemname">') 
    31         # SOURCE LINE 3 
     30        context.write(u' \n<div id="video">\n\n<p id="edititemname">') 
     31        # SOURCE LINE 4 
    3232        context.write(unicode(c.itemname)) 
    3333        context.write(u'</p>\n<script type="text/javascript">\n new Ajax.InPlaceEditor(\'edititemname\', \'/page/edititemname\', { callback: function(form, value) { return \'itemid=') 
    34         # SOURCE LINE 5 
     34        # SOURCE LINE 6 
    3535        context.write(unicode(c.itemid)) 
    3636        context.write(u"&myparam=' + escape(value) }});\n</script>\n\n\n") 
    37         # SOURCE LINE 9 
     37        # SOURCE LINE 10 
    3838        context.write(unicode( h.form(h.url(action='deleteitem'), multipart=True) )) 
    3939        context.write(u'\n') 
    40         # SOURCE LINE 10 
     40        # SOURCE LINE 11 
    4141        context.write(unicode( h.submit('Delete') )) 
    4242        context.write(u' \n') 
    43         # SOURCE LINE 11 
    44         context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
    45         context.write(u'\n') 
    4643        # SOURCE LINE 12 
     44        context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
     45        context.write(u'\n') 
     46        # SOURCE LINE 13 
    4747        context.write(unicode( h.end_form() )) 
    4848        context.write(u' \n       \n      <embed type="application/liboggplay"\n        src="') 
    49         # SOURCE LINE 15 
     49        # SOURCE LINE 16 
    5050        context.write(unicode(c.sourcedict['urlpath'])) 
    5151        context.write(unicode(c.sourcedict['clipdetail'])) 
    52         context.write(u'"\n        width="320" height="240"/>\n<form name="api">\n<table style="font-size:small">\n<tr>\n<td><input type="button" value="<<" onclick=\'skip(-1)\'/></td>\n<td><input type="button" value="Play" onclick=\'Play()\'/></td>\n<td><input type="button" value="Pause" onclick=\'Pause()\'/></td>\n<td><input type="button" value=">>" onclick=\'skip(1)\'/></td>\n</tr>\n<tr>\n<td><input type="button" value="Get position" onclick=\'GetPlayPosition()\'/></td>\n<td><input type="button" value="Go to pos" onclick=\'GotoPosition()\'/></td>\n<td><input type="text" name="gotofield" size="5"/></td>\n<td>(secs)</td>\n</tr>\n</table>\n<table style="font-size:small">\n<tr>\n<td>Output:</td>\n<td><textarea name="ofield" cols="40" rows="2"></textarea></td>\n</tr>\n<tr>\n<td>Amount to move << and >> (msecs):</td>\n<td><input type="text" name="ifield" size="20"/></td>\n</tr>\n</table>\n</form>\n\n<hr>\nHead:\n') 
    53         # SOURCE LINE 46 
     52        context.write(u'"\n        width="320" height="240"/>\n<form name="api">\n<table style="font-size:small">\n<tr>\n<td><input type="button" value="<<" onclick=\'skip(-1)\'/></td>\n<td><input type="button" value="Play" onclick=\'Play()\'/></td>\n<td><input type="button" value="Pause" onclick=\'Pause()\'/></td>\n<td><input type="button" value=">>" onclick=\'skip(1)\'/></td>\n</tr>\n<tr>\n<td><input type="button" value="Get position" onclick=\'GetPlayPosition()\'/></td>\n<td><input type="button" value="Go to pos" onclick=\'GotoPosition()\'/></td>\n<td><input type="text" name="gotofield" size="5"/></td>\n<td>(secs)</td>\n<td>Disable key shortcuts:</td>\n<td><input type="checkbox" name="shortcuts" value="toggle" onchange="toggleShortcuts()"></td>\n</tr>\n</table>\n<table style="font-size:small">\n<tr>\n<td>Output:</td>\n<td><textarea name="ofield" cols="40" rows="2"></textarea></td>\n</tr>\n<tr>\n<td>Amount to move << and >> (msecs):</td>\n<td><input type="text" name="ifield" size="20"/></td>\n</tr>\n</table>\n</form>\n\n<hr>\nHead:\n') 
     53        # SOURCE LINE 49 
    5454        context.write(unicode( h.form(h.url(action='editheadinfo'), multipart=True) )) 
    5555        context.write(u'\nid:\n') 
    56         # SOURCE LINE 48 
     56        # SOURCE LINE 51 
    5757        context.write(unicode( h.text_field('headid', value=c.headdict['id']) )) 
    5858        context.write(u'\nTitle:\n') 
    59         # SOURCE LINE 50 
     59        # SOURCE LINE 53 
    6060        context.write(unicode( h.text_field('headtitle', value=c.headdict['title']) )) 
    6161        context.write(u'\n') 
    62         # SOURCE LINE 51 
     62        # SOURCE LINE 54 
    6363        context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
    6464        context.write(u'\n\n') 
    65         # SOURCE LINE 53 
     65        # SOURCE LINE 56 
    6666        context.write(unicode( h.submit('Edit') )) 
    6767        context.write(u' \n') 
    68         # SOURCE LINE 54 
     68        # SOURCE LINE 57 
    6969        context.write(unicode( h.end_form() )) 
    7070        context.write(u' \n<br />\n<hr>\nMeta information:<br />\n<table style="font-size:small">\n<tr>\n  <td>Name</td>\n  <td>Content</td>\n</tr>\n') 
    71         # SOURCE LINE 63 
     71        # SOURCE LINE 66 
    7272        for metainfo in c.metalist: 
    73             # SOURCE LINE 64 
     73            # SOURCE LINE 67 
    7474            context.write(u'<tr>\n<td>\n<p id="editmetaname">') 
    75             # SOURCE LINE 66 
     75            # SOURCE LINE 69 
    7676            context.write(unicode(metainfo['name'])) 
    7777            context.write(u'</p>\n<script type="text/javascript">\n new Ajax.InPlaceEditor(\'editmetaname\', \'/page/editheadmetaname\', { callback: function(form, value) { return \'id=') 
    78             # SOURCE LINE 68 
     78            # SOURCE LINE 71 
    7979            context.write(unicode(metainfo['id'])) 
    8080            context.write(u'&field=name&itemid=') 
    8181            context.write(unicode(c.itemid)) 
    8282            context.write(u'&myparam=\' + escape(value) }});\n</script>\n</td>\n<td>\n<p id="editmetacontent">') 
    83             # SOURCE LINE 72 
     83            # SOURCE LINE 75 
    8484            context.write(unicode(metainfo['content'])) 
    8585            context.write(u'</p>\n<script type="text/javascript">\n new Ajax.InPlaceEditor(\'editmetacontent\', \'/page/editheadmetaname\', { callback: function(form, value) { return \'id=') 
    86             # SOURCE LINE 74 
     86            # SOURCE LINE 77 
    8787            context.write(unicode(metainfo['id'])) 
    8888            context.write(u'&field=content&itemid=') 
    8989            context.write(unicode(c.itemid)) 
    90             context.write(u"&myparam=' + escape(value) }});\n</script>\n</td>\n</tr> \n") 
    91         # SOURCE LINE 79 
     90            context.write(u"&myparam=' + escape(value) }});\n</script>\n</td>\n<td>\n") 
     91            # SOURCE LINE 81 
     92            context.write(unicode( h.form(h.url(action='deletemeta'), multipart=True) )) 
     93            context.write(u'\n') 
     94            # SOURCE LINE 82 
     95            context.write(unicode( h.submit('Delete') )) 
     96            context.write(u'\n') 
     97            # SOURCE LINE 83 
     98            context.write(unicode( h.hidden_field('metaid', value=metainfo['ixm']) )) 
     99            context.write(u'\n') 
     100            # SOURCE LINE 84 
     101            context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
     102            context.write(u'\n') 
     103            # SOURCE LINE 85 
     104            context.write(unicode( h.hidden_field('headid', value=c.headdict['ixh']) )) 
     105            context.write(u'\n') 
     106            # SOURCE LINE 86 
     107            context.write(unicode( h.end_form() )) 
     108            context.write(u' \n\n</td>\n</tr> \n') 
     109        # SOURCE LINE 91 
    92110        context.write(u'</table>\n<hr>\nAdd new meta tag:\n') 
    93         # SOURCE LINE 82 
     111        # SOURCE LINE 94 
    94112        context.write(unicode( h.form(h.url(action='addmetainfo'), multipart=True) )) 
    95         context.write(u'\n<table style="font-size:small">\n<tr>\n    <td>Id</td>\n    <td>Name</td>\n    <td>Content</td>\n</tr>\n\n<tr>\n  <td> ') 
    96         # SOURCE LINE 91 
     113        context.write(u'\n<table style="font-size:small">\n<tr>\n    <td>Id</td>\n    <td>Name</td>\n    <td>Content</td>\n</tr>\n\n<tr>\n  <td>') 
     114        # SOURCE LINE 103 
    97115        context.write(unicode( h.text_field('metaid', size=5) )) 
    98116        context.write(u'</td>\n  <td>') 
    99         # SOURCE LINE 92 
     117        # SOURCE LINE 104 
    100118        context.write(unicode( h.text_field('metaname') )) 
    101119        context.write(u'</td>\n  <td>') 
    102         # SOURCE LINE 93 
     120        # SOURCE LINE 105 
    103121        context.write(unicode( h.text_field('metacontent') )) 
    104122        context.write(u'</td>\n</tr>\n</table>\n') 
    105         # SOURCE LINE 96 
     123        # SOURCE LINE 108 
    106124        context.write(unicode( h.hidden_field('metascheme') )) 
    107125        context.write(u'\n') 
    108         # SOURCE LINE 97 
     126        # SOURCE LINE 109 
    109127        context.write(unicode( h.hidden_field('headindex', value = c.headdict['ixh']) )) 
    110128        context.write(u'\n') 
    111         # SOURCE LINE 98 
     129        # SOURCE LINE 110 
    112130        context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
    113131        context.write(u'\n\n') 
    114         # SOURCE LINE 100 
     132        # SOURCE LINE 112 
    115133        context.write(unicode( h.submit('Add') )) 
    116134        context.write(u' \n') 
    117         # SOURCE LINE 101 
     135        # SOURCE LINE 113 
    118136        context.write(unicode( h.end_form() )) 
    119137        context.write(u' \n\n<hr>\n\n\n<!--div class="sourceinfo"-->\n<table style="font-size:small">\n<tr>\n<td>Duration:</td><td> ') 
    120         # SOURCE LINE 109 
     138        # SOURCE LINE 121 
    121139        context.write(unicode(c.sourcedict['duration'])) 
    122140        context.write(u'</td>\n</tr>\n<tr>\n<td>Bitrate: </td><td>') 
    123         # SOURCE LINE 112 
     141        # SOURCE LINE 124 
    124142        context.write(unicode(c.sourcedict['bitrate'])) 
    125143        context.write(u'</td>\n</tr>\n<tr>\n<td>Resolution: </td><td>') 
    126         # SOURCE LINE 115 
     144        # SOURCE LINE 127 
    127145        context.write(unicode(c.sourcedict['resolution'])) 
    128146        context.write(u'</td>\n</tr>\n<tr>\n<td>Framerate: </td><td>') 
    129         # SOURCE LINE 118 
     147        # SOURCE LINE 130 
    130148        context.write(unicode(c.sourcedict['framerate'])) 
    131149        context.write(u'</td>\n</tr>\n<tr>\n<td>Audio: </td><td>') 
    132         # SOURCE LINE 121 
     150        # SOURCE LINE 133 
    133151        context.write(unicode(c.sourcedict['audio'])) 
    134152        context.write(u'</td>\n</tr>\n<tr>\n<td>Has video: </td><td>') 
    135         # SOURCE LINE 124 
     153        # SOURCE LINE 136 
    136154        context.write(unicode(c.sourcedict['has_video'])) 
    137155        context.write(u'</td>\n</tr>\n<tr>\n<td>Has audio: </td><td>') 
    138         # SOURCE LINE 127 
     156        # SOURCE LINE 139 
    139157        context.write(unicode(c.sourcedict['has_audio'])) 
    140158        context.write(u'</td>\n</tr>\n</table>\n\n<!--/div!-->\n</div>\n\n<div id="clips">\nClips:\n<br />\n<table style="font-size:small">\n<tr>\n  <td></td>\n  <td>Time</td>\n  <td></td>\n  <td></td> \n</tr>\n') 
    141         # SOURCE LINE 144 
     159        # SOURCE LINE 156 
    142160        for clipinfo in c.cliplist: 
    143             # SOURCE LINE 145 
     161            # SOURCE LINE 157 
    144162            context.write(u'<tr>\n') 
    145             # SOURCE LINE 146 
     163            # SOURCE LINE 158 
    146164            if c.sourcedict['has_video'] == "Yes": 
    147                 # SOURCE LINE 147 
     165                # SOURCE LINE 159 
    148166                context.write(u'   <td><a onclick="javascript:SetLocation(\'') 
    149167                context.write(unicode(c.sourcedict['urlpath'])) 
     
    154172                context.write(unicode(clipinfo['img_src'])) 
    155173                context.write(u'"></a></td>\n') 
    156             # SOURCE LINE 149 
     174            # SOURCE LINE 161 
    157175            if c.sourcedict['has_video'] == "No": 
    158                 # SOURCE LINE 150 
     176                # SOURCE LINE 162 
    159177                context.write(u'   <td><a onclick="javascript:SetLocation(\'') 
    160178                context.write(unicode(c.sourcedict['urlpath'])) 
     
    162180                context.write(unicode(clipinfo['id'])) 
    163181                context.write(u'\')"><img src="/images/blank.png"></a></td>\n') 
    164             # SOURCE LINE 152 
     182            # SOURCE LINE 164 
    165183            context.write(u'    <td>') 
    166184            context.write(unicode(clipinfo['start_time'])) 
    167185            context.write(u'</td>\n    <td>') 
    168             # SOURCE LINE 153 
     186            # SOURCE LINE 165 
    169187            context.write(unicode(clipinfo['desc'])) 
    170188            context.write(u'</td>\n    <td>') 
    171             # SOURCE LINE 154 
     189            # SOURCE LINE 166 
    172190            context.write(unicode(clipinfo['a_href'])) 
    173191            context.write(u'</td>\n\n\n') 
    174             # SOURCE LINE 157 
     192            # SOURCE LINE 169 
    175193            context.write(unicode( h.form(h.url(action='deleteclip'), multipart=True) )) 
    176194            context.write(u'\n<td>') 
    177             # SOURCE LINE 158 
     195            # SOURCE LINE 170 
    178196            context.write(unicode( h.submit('Delete') )) 
    179197            context.write(u' </td>\n') 
    180             # SOURCE LINE 159 
     198            # SOURCE LINE 171 
    181199            context.write(unicode( h.hidden_field('clipid', value=clipinfo['ixc']) )) 
    182200            context.write(u'\n') 
    183             # SOURCE LINE 160 
     201            # SOURCE LINE 172 
    184202            context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
    185203            context.write(u'\n') 
    186             # SOURCE LINE 161 
     204            # SOURCE LINE 173 
    187205            context.write(unicode( h.end_form() )) 
    188206            context.write(u' \n\n\n</tr> \n') 
    189         # SOURCE LINE 166 
    190         context.write(u'</table>\n\nAdd new clip:\n') 
    191         # SOURCE LINE 169 
     207        # SOURCE LINE 178 
     208        context.write(u'</table>\n\nAdd new clip:\n<!--') 
     209        # SOURCE LINE 181 
    192210        context.write(unicode( h.form(h.url(action='addclip'), multipart=True) )) 
    193         context.write(u'\n<table style="font-size:small">\n<tr>\n    <td>Start time</td>\n  <td>') 
    194         # SOURCE LINE 173 
     211        context.write(u'-->\n<form name="addaclip" action="addclip" >\n<table style="font-size:small">\n<tr>\n    <td>Start</td>\n  <td>') 
     212        # SOURCE LINE 186 
    195213        context.write(unicode( h.text_field('starttime', size=5) )) 
    196         context.write(u'</td>\n    <td>a_text</td>\n  <td>') 
    197         # SOURCE LINE 175 
     214        context.write(u'</td>\n</tr>\n<tr>\n<td>Desc</td>\n  <td>\n  <input type="text" name="desc" size="20" onfocus="disableShortcuts()" onblur="enableShortcuts()" id="desc" />\n  <!--') 
     215        # SOURCE LINE 192 
     216        context.write(unicode( h.text_field('desc') )) 
     217        context.write(u'--></td>\n</tr>\n<tr>\n    <td>a_text</td>\n  <td>') 
     218        # SOURCE LINE 196 
    198219        context.write(unicode( h.text_field('a_text') )) 
    199         context.write(u'</td>\n</tr>\n<tr>\n    <td>Id</td>\n  <td>') 
    200         # SOURCE LINE 179 
    201         context.write(unicode( h.text_field('id', size=5) )) 
    202         context.write(u'</td>\n    <td>a_href</td>\n  <td>') 
    203         # SOURCE LINE 181 
     220        context.write(u'</td>\n</tr>\n<tr>\n    <td>a_href</td>\n  <td>') 
     221        # SOURCE LINE 200 
    204222        context.write(unicode( h.text_field('a_href') )) 
    205         context.write(u'</td>\n</tr>\n<tr>\n    <td>img_src</td>\n  <td>') 
    206         # SOURCE LINE 185 
    207         context.write(unicode( h.text_field('img_src', size=5) )) 
    208         context.write(u'</td>\n    <td>desc</td>\n  <td>') 
    209         # SOURCE LINE 187 
    210         context.write(unicode( h.text_field('desc') )) 
    211223        context.write(u'</td>\n</tr>\n</table>\n') 
    212         # SOURCE LINE 190 
     224        # SOURCE LINE 203 
    213225        context.write(unicode( h.hidden_field('headindex', value = c.headdict['ixh']) )) 
    214226        context.write(u'\n') 
    215         # SOURCE LINE 191 
    216         context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
    217         context.write(u'\n') 
    218         # SOURCE LINE 192 
     227        # SOURCE LINE 204 
     228        context.write(unicode( h.hidden_field('itemid', value=c.itemid) )) 
     229        context.write(u'\n') 
     230        # SOURCE LINE 205 
    219231        context.write(unicode( h.hidden_field('hasvideo', value=c.sourcedict['has_video']) )) 
    220         context.write(u'\n\n') 
    221         # SOURCE LINE 194 
     232        context.write(u'\n') 
     233        # SOURCE LINE 206 
    222234        context.write(unicode( h.submit('Add') )) 
    223235        context.write(u' \n') 
    224         # SOURCE LINE 195 
    225         context.write(unicode( h.end_form() )) 
    226         context.write(u' \n</div>\n<script>\nvar plugin = document.embeds[0];\nvar input  = document.api.ifield;\nvar goto  = document.api.gotofield;\nvar output = document.api.ofield;\n\nfunction Play() {\n  plugin.play();\n  addOutput("Play!");\n}\n\nfunction Pause() {\n  plugin.pause();\n  addOutput("Pause!");\n}\n\nfunction SetLocation(location) {\n//  plugin.setPlayPosition(location);\n  plugin.setCurrentMovie(location);\n  addOutput("Current movie: " + plugin.getCurrentMovie());\n  addOutput("setting a location: " + location + " ms");\n}\n\nfunction GetPlayPosition() {\n  addOutput("Play position: " + plugin.getPlayPosition() + " ms");\n}\n\nfunction skip(dir) {\n//    addOutput("we get here")\n    i = getInput();\n    addOutput("i is " + i);\n    if (i <= 0) i = 1000;\n    addOutput("dir is " + dir);\n    t = plugin.getPlayPosition() + (i * dir);\n    addOutput("t is " + t);\n    addOutput("Skipping by " + i + " to " + t + " ms - " +\n            (plugin.setPlayPosition(t) ? "succeeded" : "failed"));\n}\n\nfunction getInput() {\n  i = parseInt(input.value);\n  return isNaN(i) ? 0 : i;\n}\n\nfunction getGoto() {\n  i = parseInt(goto.value);\n  return isNaN(i) ? 0 : i;\n}\n\n\nfunction GotoPosition() {\n  i = getGoto();\n  i = i * 1000;\n  plugin.setPlayPosition(i);\n}\n\nvar outLines = 0;\n\nfunction addOutput(str) {\n  if (outLines == 0) {\n    output.value = str;\n  } else {\n    output.value = str + "\\n" + output.value;\n  }\n  outLines++;\n  if (outLines == 11) {\n    i = output.value.lastIndexOf("\\n");\n    output.value = output.value.substr(0, i);\n    outLines--;\n  }\n}\n</script>\n\n') 
     236        # SOURCE LINE 207 
     237        context.write(unicode( h.end_form() )) 
     238        context.write(u' \n\n<script>\nvar plugin = document.embeds[0];\nvar input  = document.api.ifield;\nvar clipstart = document.addaclip.starttime;\nvar goto  = document.api.gotofield;\nvar output = document.api.ofield;\nvar focusid = "enable";\nvar shortcuts = document.api.shortcuts;\n\nfunction Play() {\n  plugin.play();\n  addOutput("Play");\n}\n\nfunction Pause() {\n  plugin.pause();\n  addOutput("Pause");\n}\n\nfunction SetLocation(location) {\n//  plugin.setPlayPosition(location);\n  plugin.setCurrentMovie(location);\n  addOutput("Current movie: " + plugin.getCurrentMovie());\n  addOutput("setting a location: " + location + " ms");\n}\n\nfunction GetPlayPosition() {\n  addOutput("Play position: " + plugin.getPlayPosition() + " ms");\n}\n\nfunction PauseOrPlay(){\n\taddOutput("current state: " + plugin.getCurrentState());\n\tif (plugin.getCurrentState()==0) {Play();}\n\telse {\n\tif (plugin.getCurrentState()==1) Pause();}\n}\n\nfunction skip(dir) {\n//    addOutput("we get here")\n    i = getInput();\n    addOutput("i is " + i);\n    if (i <= 0) i = 1000;\n    addOutput("dir is " + dir);\n    t = plugin.getPlayPosition() + (i * dir);\n    addOutput("t is " + t);\n    addOutput("Skipping by " + i + " to " + t + " ms - " +\n            (plugin.setPlayPosition(t) ? "succeeded" : "failed"));\n}\n\nfunction getInput() {\n  i = parseInt(input.value);\n  return isNaN(i) ? 0 : i;\n}\n\nfunction getGoto() {\n  i = parseInt(goto.value);\n  return isNaN(i) ? 0 : i;\n}\n\n\nfunction GotoPosition() {\n  i = getGoto();\n  i = i * 1000;\n  plugin.setPlayPosition(i);\n}\n\nvar outLines = 0;\n\nfunction addOutput(str) {\n  if (outLines == 0) {\n    output.value = str;\n  } else {\n    output.value = str + "\\n" + output.value;\n  }\n  outLines++;\n  if (outLines == 11) {\n    i = output.value.lastIndexOf("\\n");\n    output.value = output.value.substr(0, i);\n    outLines--;\n  }\n\n}\n\nfunction addClipStarttime() {\n  clipstart.value = plugin.getPlayPosition()/1000;\n}\n\nfunction keyPressed(e) {\n  if (focusid=="disable") {return;}\n  else {\n  switch (String.fromCharCode(e.which)) {\n  \tcase "t": GetPlayPosition(); break;\n  \tcase "s": addClipStarttime(); break;\n  \tcase "p": PauseOrPlay(); break;\n  }\n  focusid="enable";\n  }\n}\nfunction disableShortcuts() {\n  focusid="disable";\n  addOutput("Shortcuts: " + focusid);\n  }\n\nfunction enableShortcuts() {\n  focusid="enable";\n  addOutput("Shortcuts: " + focusid);\n  }\n\nfunction toggleShortcuts() {\n  if (focusid=="enable") {focusid="disable";}\n  else {\n  if (focusid=="disable") {focusid="enable";}\n  }\n\n}\n\n</script>\n\n\n') 
    227239        return '' 
    228240    finally: