diff --git a/.metadata/.log b/.metadata/.log index 0cb16378c..ea77ea8b9 100644 --- a/.metadata/.log +++ b/.metadata/.log @@ -209,3 +209,60 @@ java.lang.UnsupportedOperationException: Not supported yet. at com.aptana.index.core.IndexRequestJob.indexFileStores(IndexRequestJob.java:205) at com.aptana.index.core.IndexContainerJob.run(IndexContainerJob.java:114) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) +!SESSION 2015-01-17 11:30:30.655 ----------------------------------------------- +eclipse.buildId=unknown +java.version=1.6.0_24 +java.vendor=Sun Microsystems Inc. +BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN +Command-line arguments: -os win32 -ws win32 -arch x86 + +!ENTRY org.eclipse.core.resources 4 567 2015-01-17 11:30:37.624 +!MESSAGE Workspace restored, but some problems occurred. +!SUBENTRY 1 org.eclipse.core.resources 4 567 2015-01-17 11:30:37.624 +!MESSAGE Could not read metadata for 'demo'. +!STACK 1 +org.eclipse.core.internal.resources.ResourceException: The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:851) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:874) + at org.eclipse.core.internal.resources.SaveManager.restoreMetaInfo(SaveManager.java:854) + at org.eclipse.core.internal.resources.SaveManager.restore(SaveManager.java:703) + at org.eclipse.core.internal.resources.SaveManager.startup(SaveManager.java:1528) + at org.eclipse.core.internal.resources.Workspace.startup(Workspace.java:2503) + at org.eclipse.core.internal.resources.Workspace.open(Workspace.java:2251) + at org.eclipse.core.resources.ResourcesPlugin.start(ResourcesPlugin.java:439) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711) + at java.security.AccessController.doPrivileged(Native Method) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702) + at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683) + at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381) + at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299) + at org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:440) + at org.eclipse.osgi.internal.loader.BundleLoader.setLazyTrigger(BundleLoader.java:268) + at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:107) + at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:463) + at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216) + at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:400) + at org.eclipse.osgi.internal.loader.SingleSourcePackage.loadClass(SingleSourcePackage.java:35) + at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:473) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429) + at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417) + at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107) + at java.lang.ClassLoader.loadClass(Unknown Source) + at com.aptana.rcp.IDEApplication.start(IDEApplication.java:125) + at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) + at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344) + at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) + at java.lang.reflect.Method.invoke(Unknown Source) + at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622) + at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577) + at org.eclipse.equinox.launcher.Main.run(Main.java:1410) +!SUBENTRY 2 org.eclipse.core.resources 4 567 2015-01-17 11:30:37.626 +!MESSAGE The project description file (.project) for 'demo' is missing. This file contains important information about the project. The project will not function properly until this file is restored. + +!ENTRY org.eclipse.core.jobs 2 2 2015-01-17 11:33:58.913 +!MESSAGE Job found still running after platform shutdown. Jobs should be canceled by the plugin that scheduled them during shutdown: com.aptana.usage.internal.DefaultAnalyticsEventHandler$1 diff --git a/.metadata/.plugins/com.aptana.core.io/connections.9 b/.metadata/.plugins/com.aptana.core.io/connections.9 deleted file mode 100644 index 4371c4759..000000000 --- a/.metadata/.plugins/com.aptana.core.io/connections.9 +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 b/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 deleted file mode 100644 index 375897785..000000000 --- a/.metadata/.plugins/com.aptana.syncing.core/defaultConnection.9 +++ /dev/null @@ -1,7 +0,0 @@ - - - -Default -file:/C:/Users/nudt - - \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.syncing.core/sites.9 b/.metadata/.plugins/com.aptana.syncing.core/sites.9 deleted file mode 100644 index d9b475695..000000000 --- a/.metadata/.plugins/com.aptana.syncing.core/sites.9 +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.metadata/.plugins/com.aptana.webserver.core/webservers.8 b/.metadata/.plugins/com.aptana.webserver.core/webservers.8 deleted file mode 100644 index 5c07542b1..000000000 --- a/.metadata/.plugins/com.aptana.webserver.core/webservers.8 +++ /dev/null @@ -1,6 +0,0 @@ - - - -demo - - \ No newline at end of file diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index index fddafcbcd..83f5328be 100644 Binary files a/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index and b/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree b/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree deleted file mode 100644 index 5b2529389..000000000 Binary files a/.metadata/.plugins/org.eclipse.core.resources/.root/2.tree and /dev/null differ diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 deleted file mode 100644 index 0b4ef3b47..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.core.io.9 +++ /dev/null @@ -1,3 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -connections=connections.9 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 deleted file mode 100644 index 371e94161..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.syncing.core.9 +++ /dev/null @@ -1,4 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -defaultConnection=defaultConnection.9 -sites=sites.9 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 b/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 deleted file mode 100644 index 1af4b85d6..000000000 --- a/.metadata/.plugins/org.eclipse.core.resources/.safetable/com.aptana.webserver.core.8 +++ /dev/null @@ -1,3 +0,0 @@ -#safe table -#Tue Mar 11 17:27:27 CST 2014 -webservers=webservers.8 diff --git a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources index b3b591e28..b756a6952 100644 Binary files a/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources and b/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs index 752d73cf4..992cdf2bf 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.explorer.prefs @@ -1,2 +1,2 @@ -activeProject=demo +activeProject=trustie eclipse.preferences.version=1 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs index a710d7ff4..e78c19c52 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.portal.ui.prefs @@ -1,2 +1,2 @@ eclipse.preferences.version=1 -last_known_studio_version=3.4.0.1358388620 +last_known_studio_version=3.4.2.1368863613 diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs index 590c84632..bc6c0d7c7 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/com.aptana.theme.prefs @@ -1,7 +1,7 @@ ACTIVE_HYPERLINK_COLOR=84,143,160 ACTIVE_THEME=Aptana Studio HYPERLINK_COLOR=84,143,160 -THEME_CHANGED=1394527579080 +THEME_CHANGED=1421465443240 eclipse.preferences.version=1 hyperlinkColor=84,143,160 hyperlinkColor.SystemDefault=false diff --git a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs index 71a846af6..310adab05 100644 --- a/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs +++ b/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -2,6 +2,6 @@ PROBLEMS_FILTERS_MIGRATE=true SHOW_COOLBAR=true SHOW_PERSPECTIVEBAR=true eclipse.preferences.version=1 -platformState=1394526372425 +platformState=1420528131671 quickStart=false tipsAndTricks=true diff --git a/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch b/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch index 678ced8a0..08a9581b9 100644 --- a/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch +++ b/.metadata/.plugins/org.eclipse.debug.core/.launches/Firefox - Internal Server.launch @@ -3,7 +3,7 @@ - + diff --git a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml index 4868ecd96..eba54f80b 100644 --- a/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml +++ b/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -1,14 +1,14 @@
- - - - + + + + - +
diff --git a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml index 88eaacee1..cd47216f4 100644 --- a/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml +++ b/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml @@ -1,5 +1,5 @@ - + @@ -8,14 +8,14 @@ - + - - - + + + - + @@ -37,7 +37,7 @@ demo -E:\code\demo +C:\Users\zh @@ -66,10 +66,10 @@ - - + + - + @@ -78,7 +78,7 @@ - + @@ -124,14 +124,19 @@ - - - - + + + + + + + + + - + @@ -166,15 +171,11 @@ - - - - - - - - - + + + + + @@ -188,6 +189,9 @@ + + + diff --git a/app/controllers/applied_project_controller.rb b/app/controllers/applied_project_controller.rb index 3d061ef74..d7b65174f 100644 --- a/app/controllers/applied_project_controller.rb +++ b/app/controllers/applied_project_controller.rb @@ -3,7 +3,24 @@ class AppliedProjectController < ApplicationController #申请加入项目 def applied_join_project @user_id = params[:user_id] - @project = Project.find(params[:project_id]) + @project = Project.find_by_id(params[:project_id]) + if params[:project_join] + if @project + @applieds = AppliedProject.where("user_id = ? and project_id = ?", params[:user_id],params[:project_id]) + if @applieds.count == 0 + appliedproject = AppliedProject.create(:user_id => params[:user_id], :project_id => params[:project_id]) + Mailer.applied_project(appliedproject).deliver + end + @status = 1 + else + @status = 0 + end + respond_to do |format| + format.js + end + return + end + @applieds = AppliedProject.where("user_id = ? and project_id = ?", params[:user_id],params[:project_id]) if @applieds.count == 0 appliedproject = AppliedProject.create(:user_id => params[:user_id], :project_id => params[:project_id]) diff --git a/app/views/applied_project/applied_join_project.js.erb b/app/views/applied_project/applied_join_project.js.erb new file mode 100644 index 000000000..9fd358ede --- /dev/null +++ b/app/views/applied_project/applied_join_project.js.erb @@ -0,0 +1,7 @@ +<% if @status == 0%> + alert("您申请的项目不存在"); +<% elsif @status == 1%> + alert("申请成功"); +<%else%> + alert("申请失败"); +<%end%> \ No newline at end of file diff --git a/app/views/layouts/mailer.html.erb b/app/views/layouts/mailer.html.erb index abb896b61..c5be3f4fd 100644 --- a/app/views/layouts/mailer.html.erb +++ b/app/views/layouts/mailer.html.erb @@ -44,9 +44,7 @@ a:hover.mail_reply{ background:#06a9bc; text-decoration:none;}

<%= l(:mail_issue_greetings)%>

<%= yield %> -
- <%= Redmine::WikiFormatting.to_html(Setting.text_formatting, Setting.emails_footer).html_safe %> - + diff --git a/app/views/mailer/_issue.html.erb b/app/views/mailer/_issue.html.erb index 0ec585868..5145dbb2c 100644 --- a/app/views/mailer/_issue.html.erb +++ b/app/views/mailer/_issue.html.erb @@ -1,26 +1,29 @@

+ <%= link_to(h("#{@author.login}(#{@author.show_name})"), @issue_author_url , :style=>'color:#1b55a7; font-weight:bold;') %> <%= l(:mail_issue_title_userin)%> <%= link_to(h("#{@issue.project.name}"), @project_url, :style=>'color:#1b55a7; font-weight:bold;') %><%= l(:mail_issue_title_active)%>

    -
  • <%= l(:mail_issue_subject)%><%= link_to(issue.subject, issue_url, :style=>'color:#1b55a7; font-weight:bold;') %>
  • -
  • <%= l(:mail_issue_sent_from)%><%= issue.project.name %><%= l(:mail_issue_from_project)%>
  • -
  • <%= l(:mail_issue_content)%> +
  • <%= l(:mail_issue_subject)%><%= link_to(issue.subject, issue_url, :style=>'color:#1b55a7; font-weight:bold;') %>
  • +
  • <%= l(:mail_issue_sent_from)%><%= issue.project.name %><%= l(:mail_issue_from_project)%>
  • +
  • <%= l(:mail_issue_content)%> + <% if @journal.nil? %> - <%= issue.description %> + <%= issue.description=='' ? l(:label_none) : issue.description %> <% else %> - <%= @journal.notes %> + <%= @journal.notes=='' ? l(:label_none) : @journal.notes %> <% end%>
  • -
  • - - <% unless @issue.attachments.nil? %> - <%= l(:mail_issue_attachments)%> +
  • + <%= l(:mail_issue_attachments)%> + <% if @issue.attachments.count == 0 %> + <%= l(:label_none)%> + <% else %> <% @issue.attachments.each do |attach| %>

    <%= link_to_attachment(attach, :download => true, :token => @token.value, :only_path => false, :style=>'color:#1b55a7; font-weight:bold;')%>

    diff --git a/app/views/mailer/issue_edit.html.erb b/app/views/mailer/issue_edit.html.erb index f7412402c..35b963b41 100644 --- a/app/views/mailer/issue_edit.html.erb +++ b/app/views/mailer/issue_edit.html.erb @@ -1,10 +1,6 @@ -
    - <%= l(:text_issue_updated, :id => "##{@issue.project_index}", :author => h(@journal.user)) %> - -
    -
    + <%= render :partial => 'issue', :formats => [:html], :locals => { :issue => @issue, :issue_url => @issue_url } %>
    <%= link_to( l(:mail_issue_footer), @user_url, :style=>'font-size:12px; font-weight:normal; color:#1b55a7;') %>
    diff --git a/app/views/mailer/news_comment_added.html.erb b/app/views/mailer/news_comment_added.html.erb index 5ac95a571..3e0118849 100644 --- a/app/views/mailer/news_comment_added.html.erb +++ b/app/views/mailer/news_comment_added.html.erb @@ -24,7 +24,7 @@
  • <%= l(:mail_issue_content)%> - <%= @news.description %> + <%= @comment.comments %>
  • diff --git a/app/views/memos/edit.html.erb b/app/views/memos/edit.html.erb index 09e4262fe..008522316 100644 --- a/app/views/memos/edit.html.erb +++ b/app/views/memos/edit.html.erb @@ -1,5 +1,6 @@ <% @replying = !@memo.parent.nil? %> +

    <%=l(:label_memo_edit)%>

    <%= labelled_form_for(@memo, :url => forum_memo_path(@memo.forum_id, @memo)) do |f| %> <% if @memo.errors.any? %> @@ -19,8 +20,12 @@ <% end %>

    - <%= f.text_field :subject, :required => true, :size => 96 ,:readonly => @replying, :maxlength => 50%> -

    + <% if @memo.parent.nil? && @memo.children.first.nil? %> + <%= f.text_field :subject, :required => true, :size => 96 ,:readonly => false, :maxlength => 50%> + <% else %> + <%= f.text_field :subject, :required => true, :size => 96 ,:readonly => true, :style => "border: 1px solid gray", :maxlength => 50%> + <% end %> +

    <% if User.current.admin?%>

    <% unless @replying %> diff --git a/app/views/poll/_poll_form.html.erb b/app/views/poll/_poll_form.html.erb index 1d0dee837..4742028d5 100644 --- a/app/views/poll/_poll_form.html.erb +++ b/app/views/poll/_poll_form.html.erb @@ -69,7 +69,7 @@ else{ $('#ajax-modal').html('<%= escape_javascript(render :partial => 'poll_submit', locals: { :poll => @poll,:is_remote => false}) %>'); showModal('ajax-modal', '310px'); - $('#ajax-modal').css('height','115px'); + $('#ajax-modal').css('height','120px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); diff --git a/app/views/poll/index.html.erb b/app/views/poll/index.html.erb index 3962768da..29a5ec51f 100644 --- a/app/views/poll/index.html.erb +++ b/app/views/poll/index.html.erb @@ -15,7 +15,7 @@ "

    " + "
"); showModal('ajax-modal', '310px'); - $('#ajax-modal').css('height','115px'); + $('#ajax-modal').css('height','120px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); @@ -47,7 +47,7 @@ "" + ""); showModal('ajax-modal', '310px'); - $('#ajax-modal').css('height','115px'); + $('#ajax-modal').css('height','120px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); diff --git a/app/views/poll/statistics_result.html.erb b/app/views/poll/statistics_result.html.erb index a33daacfb..fd78d9230 100644 --- a/app/views/poll/statistics_result.html.erb +++ b/app/views/poll/statistics_result.html.erb @@ -2,34 +2,43 @@ - <%= l(:label_poll_result) %> + + <%= l(:label_poll_result) %> + <%= stylesheet_link_tag 'polls', :media => 'all' %>
-

<%= @poll.polls_name %> <%= l(:label_poll) %>

+

+ <%= @poll.polls_name %> + <%= l(:label_poll) %> +

-
- <% @poll_questions.each do |poll_question| %> -
    -
  1. -
    - 第<%= poll_question.question_number %>题:<%= poll_question.question_title %> [<%= options_show(poll_question.question_type) %>] -
    - <% if poll_question.question_type == 1 || poll_question.question_type == 2 %> - <%= render :partial =>'choice_show', :locals =>{ :poll_question => poll_question } %> - <% else %> - <%= render :partial =>'quiz_answers', :locals =>{ :poll_question => poll_question } %> - <% end %> -
  2. -
- <% end %> -
    - <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%> -
-
-
+
+ <% @poll_questions.each do |poll_question| %> +
    +
  1. +
    + + 第<%= poll_question.question_number %>题: + + <%= poll_question.question_title %> + + [<%= options_show(poll_question.question_type) %>] + +
    + <% if poll_question.question_type == 1 || poll_question.question_type == 2 %> + <%= render :partial =>'choice_show', :locals =>{ :poll_question => poll_question } %> + <% else %> + <%= render :partial =>'quiz_answers', :locals =>{ :poll_question => poll_question } %> + <% end %> +
  2. +
+ <% end %> +
    + <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%> +
diff --git a/app/views/projects/_join_project.html.erb b/app/views/projects/_join_project.html.erb index c7ce29dae..d30ec73e1 100644 --- a/app/views/projects/_join_project.html.erb +++ b/app/views/projects/_join_project.html.erb @@ -1,4 +1,3 @@ - @@ -34,7 +33,7 @@ { hideModal(obj); $("#new-watcher-form").submit(); - alert("申请成功"); +// alert("申请成功"); } function hidden_join_course_form() @@ -60,6 +59,7 @@
  • 项 目 ID: + diff --git a/public/stylesheets/polls.css b/public/stylesheets/polls.css index a4e2010f0..370a3c515 100644 --- a/public/stylesheets/polls.css +++ b/public/stylesheets/polls.css @@ -1,17 +1,17 @@ /* CSS Document */ #polls{ font-size:12px; font-family:"微软雅黑","宋体" !important; line-height:1.9; background:#fff; font-style:normal;} div,html,img,ul,li,p,body,h1,h2,h3,h4,p,a,table,tr,td,fieldset,input,span{ margin:0; padding:0;} -#polls div,img,tr,td{ border:0;} -#polls table,tr,td{border:0; cellspacing:0; cellpadding:0;} -#polls ul,li{ list-style-type:none} -#polls .cl{ clear:both; overflow:hidden; } -#polls a{ text-decoration:none; } -#polls a:hover{ text-decoration:underline; } -#polls .ml10{ margin-left:10px;} -#polls .ml20{ margin-left:20px;} -#polls .mr10{ margin-right:10px;} -#polls .fl{ float: left;} -#polls .fr{ float:right;} +div,img,tr,td{ border:0;} +table,tr,td{border:0; cellspacing:0; cellpadding:0;} +ul,li{ list-style-type:none} +.cl{ clear:both; overflow:hidden; } +a{ text-decoration:none; } +a:hover{ text-decoration:underline; } +.ml10{ margin-left:10px;} +.ml20{ margin-left:20px;} +.mr10{ margin-right:10px;} +.fl{ float: left;} +.fr{ float:right;} /*问卷按钮*/ /*.polls_btn{ height:33px;border-top:1px solid #15bed1; border-bottom:1px solid #15bed1;border-right:1px solid #cee6e6; width:225px; padding:7px 0 0 15px; }*/ @@ -41,7 +41,7 @@ ul.wlist li a:hover{ background:#15bccf; color:#fff; text-decoration:none;} /*问卷页面*/ -.polls_box{ border:1px solid #dcdcdc; padding:15px 30px;} +.polls_box{ border:1px solid #dcdcdc; padding:15px 30px;margin-left: 7px;} .ur_page_title{ font-size:16px; text-align:center; color:#353535; word-break:break-all; word-wrap:break-word;} .ur_prefix_content{ color:#656565; text-indent:30px; margin-top:10px; } .ur_card{border-top:1px solid #dcdcdc;margin-top:20px; color:#3a3a3a;} @@ -113,7 +113,7 @@ a:hover.icon_add{background:url(images/icons.png) -20px -310px no-repeat;} a:hover.icon_remove{background:url(images/icons.png) -20px -338px no-repeat;} .ur_editor_toolbar{ margin-bottom:10px;} .ur_editor_toolbar input{ width:40px; height:20px;} -.ur_editor02{width:655px; border:1px solid #cbcbcb; padding:10px; margin-bottom:10px;} +.ur_editor02{width:655px; padding:10px; margin-bottom:10px;} a.ur_button_submit{ display:block; width:106px; height:37px; margin:0 auto; background:#15bccf; color:#fff; font-size:16px; text-align:center; padding-top:3px; margin-bottom:10px; } a:hover.ur_button_submit{ background:#0fa9bb; text-decoration:none;} a.ur_icon_de{ background:url(images/icons.png) 0px -338px no-repeat; width:16px; height:27px; display:block;float:right; margin-top:15px;} diff --git a/spec/factories/users.rb b/spec/factories/users.rb new file mode 100644 index 000000000..369e60f48 --- /dev/null +++ b/spec/factories/users.rb @@ -0,0 +1,10 @@ +require 'faker' + +FactoryGirl.define do + factory :user do + login "ExampleUser" + mail "user@example.com" + password "foobar" + password_confirmation "foobar" + end +end \ No newline at end of file diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb new file mode 100644 index 000000000..6b8c962bd --- /dev/null +++ b/spec/models/user_spec.rb @@ -0,0 +1,140 @@ +require 'spec_helper' +describe User do + #测试数据验证 + # before { @user = User.new(login: "ExampleUser" ,mail: "user@example.com", + # password: "foobar",password_confirmation: "foobar" ) } + before :each do + @user = User.new(login: "ExampleUser" ,mail: "user@example.com", + password: "foobar",password_confirmation: "foobar" ) + end + subject { @user }#指定@user为测试对象 + #属性存在性的测试 + it { should respond_to(:login) } + it { should respond_to(:mail) } + + #此处采用与构建的方式生成数据 + # it"is invalid without login" do + # user=FactoryGirl.build(:user,login: nil) + # expect(user).to_not be_valid + # end + #用户名唯一性的测试 + describe "when login is already taken" do + before do + user_with_same_login=@user.dup + user_with_same_login.save + end + it{should_not be_valid} + # it "should be valid" do + # expect(@user).to be_valid + # end + end + + #邮箱唯一性测试 + describe "when mail address is already taken " do + before do + user_with_same_mail=@user.dup#dup method copy mail + user_with_same_mail.mail=@user.mail.upcase#转大写 + user_with_same_mail.save + end + it{should_not be_valid} + end + #邮箱唯一性测试2 + # describe " is invalid with a same email address" do + # User.create(login:'peter',mail:'test@qq.com')#先保存一个合法的对象 + # user1=User.new(login:'jim',mail:'testqq@.com')#再创建user1作为测试的对比对象 + # # expect(user1).to have(1).errors_on(:mail) + # it{should_not be_valid} + # end + + #login长度测试(login最大25字符) + describe "when the login is too long " do + before{@user.login='a'*25} + it{should be_valid} + end + #姓和名的长度测试 + describe "when the first name is too long " do + before{@user.firstname='a'*30} + it{should_not be_valid} + end + describe "when the last name is too long " do + before{@user.lastname='a'*30} + it{should_not be_valid} + end + + #login合法性的测试(符合正则表达式规则的用户名:数字英文) + describe "when login format is invalid" do + it"should be invalid" do + username=%w[aa!3 aaa%$&*! 1111==!] + username.each do |valid_username| + @user.login=valid_username + expect(@user).not_to be_valid + end + end + end + + describe "when login format is valid" do + it"should be valid" do + username = %w[jim123 123456 aaaaaa] + username.each do |valid_username| + @user.login=valid_username + expect(@user).to be_valid + end + end + end + + #邮箱合法性测试,在模型user中邮箱使用了正则表达式 + describe "is the mail valid" do + context "when mail format is invalid" do + it"should be invalid" do + address=%w[user@foo,com user_at_foo.org example.user@foo.foo@bar_baz.com foo@bar+baz.com] + address.each do |valid_address| + @user.mail=valid_address + expect(@user).not_to be_valid + end + end + end + + context "when mail format is valid" do + it"should be valid" do + addresses = %w[user@foo.COM A_US-ER@f.b.org frst.lst@foo.jp a+b@baz.cn] + addresses.each do |valid_address| + @user.mail=valid_address + expect(@user).not_to be_valid + end + end + end + end + + describe "when the mail is too long" do#邮箱长度验证的测试 + before{@user.mail='a'*60} + it{should_not be_valid} + end + + #验证两次输入的密码是否一致的测试 + describe "when the password does not match confirmation" do + before{@user.password_confirmation="admin123"} + it{should_not be_valid} + end + + #调用相关方法是否能返回期待的结果 + #userInfo方法,选择项目成员时显示的用户信息的文字 + describe "returns the user info when choice the members of the project" do + context "第一种情况" do + @user=User.new() + expect(@user.userInfo).to eq '' + end + context "二种情况" do + @user=User.new() + expect(@user.userInfo).to eq '' + end + end + + # def name + # [firstname, lastname].join(' ') + # end + # it "returns a contact's full name as a string" do + # contact = Contact.new(firstname: 'John', lastname: 'Doe', + # email: 'johndoe@example.com') + # expect(contact.name).to eq 'John Doe'#调用contact的name方法 + # end +end \ No newline at end of file