diff --git a/src/runtime/javascript/minibar/minibar.css b/src/runtime/javascript/minibar/minibar.css index c697ca8a4..985e08070 100644 --- a/src/runtime/javascript/minibar/minibar.css +++ b/src/runtime/javascript/minibar/minibar.css @@ -41,4 +41,8 @@ div#saldospel input[type=button] { font-size: 100%; } div#saldospel input.correct { color: green; } div#saldospel input.incorrect { color: red; } -input[type=text] { width: 5em; } \ No newline at end of file +#surface input[type=text] { width: 5em; } + +.feedback textarea { width: 95%; } + +span.field { background-color: #eee; } \ No newline at end of file diff --git a/src/runtime/javascript/minibar/minibar.js b/src/runtime/javascript/minibar/minibar.js index c31e3ebd2..d086bb971 100644 --- a/src/runtime/javascript/minibar/minibar.js +++ b/src/runtime/javascript/minibar/minibar.js @@ -15,7 +15,8 @@ var options={ show_trees: false, show_grouped_translations: true, delete_button_text: "⌫", - try_google: true + try_google: true, + feedback_button: false } /* --- Grammar access object ------------------------------------------------ */ @@ -296,7 +297,7 @@ function show_completions(completions) { else { var trans=element("translations"); trans.innerHTML=""; - try_google(menu.grammar,trans,target_lang()); + extra_actions(menu.grammar,trans,target_lang()); } var surface=element("surface"); if(surface.typed && emptycnt==completions.length) { @@ -328,6 +329,8 @@ function show_translations(translations) { var grammar=element("language_menu").grammar; var to=target_lang(); var cnt=translations.length; + //trans.translations=translations; + trans.single_translation=[]; trans.innerHTML=""; trans.appendChild(wrap("h3",text(cnt<1 ? "No translations?" : cnt>1 ? ""+cnt+" translations:": @@ -339,14 +342,14 @@ function show_translations(translations) { if(options.show_abstract && t.tree) tbody.appendChild(tr([th(text("Abstract: ")), tdt(abstree_button(t.tree),text(" "+t.tree))])); - for(var i=0;i 1) tbody.appendChild(tr([(text(lin[i].tree))])); } trans.appendChild(wrap("table",tbody)); } } - try_google(grammar,trans,to); -} - -function try_google(grammar,trans,to) { - if(options.try_google) { - var menu=element("language_menu"); - var c=menu.current; - var url="http://translate.google.com/?sl="+langpart(c.from,grammar.name); - if(to!="-1") url+="&tl="+to; - url+="&q="+encodeURIComponent(c.input); - var link=empty("a","href",url); - link.innerHTML="Try this sentence in Google Translate"; - link.setAttribute("target","translate.google.com"); - trans.appendChild(link); - } + extra_actions(grammar,trans,to); } function abstree_button(abs) { @@ -408,6 +399,70 @@ function toggle_img(i) { } +function extra_actions(grammar,trans,to) { + if(options.try_google) try_google(grammar,trans,to); + if(options.feedback_button) feedback_button(trans); +} + +function try_google(grammar,trans,to) { + var menu=element("language_menu"); + var c=menu.current; + var url="http://translate.google.com/?sl="+langpart(c.from,grammar.name); + if(to!="-1") url+="&tl="+to; + url+="&q="+encodeURIComponent(c.input); + var link=empty("a","href",url); + link.innerHTML="Try this sentence in Google Translate"; + link.setAttribute("target","translate.google.com"); + trans.appendChild(link); +} + +function feedback_button(trans) { + trans.appendChild(text(" ")); + trans.appendChild(button("Feedback","open_feedback()")); +} + +function open_feedback() { + window.open("feedback.html",'feedback','toolbar=no,location=no,status=no,menubar=no'); +} + +function setField(form,name,value) { + form[name].value=value; + var el=element(name); + if(el) el.innerHTML=value; +} + +function opener_element(id) { with(window.opener) return element(id); } + +function prefill_feedback_form() { + var to_menu=opener_element("to_menu"); + var trans=opener_element("translations"); + var menu=to_menu.langmenu; + var grammar=menu.grammar; + var gn=grammar.name; + var form=document.forms.namedItem("feedback"); + var from=langpart(menu.current.from,gn); + var to=langpart(to_menu.options[to_menu.selectedIndex].value,gn); + + setField(form,"grammar",gn); + setField(form,"from",from); + setField(form,"input",menu.current.input); + setField(form,"to",to=="-1" ? "All" : to); + if(to=="-1") + element("translation_box").style.display="none"; + else + setField(form,"translation",trans.single_translation.join(" / ")); + + // Browser info: + form["inner_size"].value=window.innerWidth+"×"+window.innerHeight; + form["outer_size"].value=window.outerWidth+"×"+window.outerHeight; + form["screen_size"].value=screen.width+"×"+screen.height; + form["available_screen_size"].value=screen.availWidth+"×"+screen.availHeight; + form["color_depth"].value=screen.colorDepth; + form["pixel_depth"].value=screen.pixelDepth; + + window.focus(); +} + /* se.chalmers.cs.gf.gwt.TranslateApp/align-btn.png