Browse Source

TODO list

Igor 3 years ago
parent
commit
d9064d312c
1 changed files with 250 additions and 0 deletions
  1. 250 0
      TODO.txt

+ 250 - 0
TODO.txt

@@ -0,0 +1,250 @@
+Alterações iTarefa:
+
+--> quando o aluno tentava acessar uma atividade que foi removida, era gerado um bug
+:: com as alterações, o aluno recebe um alerta.
+
+SOLUÇÃO:
+* locallib.php
+   função: view_iassign_current() 
+   if (!$iassign_statement_activity_item) {
+       print $OUTPUT->header();
+       \core\notification::error(get_string('activity_not_found', 'iassign'));
+       print $OUTPUT->footer();
+       exit;
+     }
+
+
+--> quando o aluno finalizava uma tarefa no iFractions, a tela do iMA ficava preta
+problema: ao carregar a página inicial, o iTarefa entrega um código para acessar o ilm_security,
+mas com a finalização da atividade, o mesmo código era mantido, portanto, não tinha como acessar, 
+pois o código do ilm_security só pode ser usado uma única vez.
+
+SOLUÇÃO: 
+* iFractions/index.html:
+   função: finish_redirect()
+     parent.location.reload(true); // Ao passar o "true", o navegador não usa o cache e busca um novo código ilm_security
+
+
+--> manter selecionado o iLM que foi usado recentemente para criar a última atividade, a fim de melhorar a usabilidade e produtividade
+* arquivo alterado: iassign_form.php
+
+-->  Gerenciamento de arquivos:
+
+1. Criação da atividade:
+- O campo itemid passa a receber o statementid.
+- Função: new_iassign //locallib.php
+ // IGOR: itemid do arquivo é o mesmo que o id do statemente registrado acima:
+      $itemid = $id;
+
+2. Alteração da atividade:
+- Atualmente, o arquivo anterior é removido, mas não remove também as entradas de diretórios.
+
+3. Exclusão da atividade:
+- O iTarefa não removia as entradas do files, que estão associadas àquela atividade excluída.
+- Para corrigir, as linhas abaixo foram adicionadas:
+
+função deleteyes: // locallib.php
+
+   $fs = get_file_storage(); 
+      $fs->delete_area_files(
+        $iassign->context->id, 
+        'mod_iassign', 
+        'exercise', 
+        $this->activity->id
+      );
+
+4. Cópia de atividade: 
+- Com a alteração feita para a criação, a cópia também passou a registrar o itemid com o statementid.
+
+5. Mover atividade:
+- Para preservar o itemid do arquivo, a seguinte linha foi atualizada:
+
+função move_activity: //locallib.php
+$newfile = $fs->create_file_from_storedfile(array('contextid' => $id_context, 'component' => 'mod_iassign', 'filearea' => 'exercise', 'itemid' => $iassign_id), $value);
+  
+
+5. No update: 
+
+..> Testar na nossa base:
+
+if ($oldversion < 2020102800) {
+      // 1. encontrar os contextos dos arquivos do itarefa:
+      $iassign_contexts_list = $DB->get_records_sql("SELECT contextid FROM {files} f " .
+        " WHERE component='mod_iassign'");
+      // 2. compor um array com todos os contextos encontrados: 
+      $contexts = array();
+      foreach ($iassign_contexts_list as $iassign_context_item) {
+        array_push($contexts, $iassign_context_item->contextid);
+      }
+      // 3. encontrar todas as atividades do itarefa, em que o arquivo não tenha o mesmo id do statement:
+      $iassign_statement_list = $DB->get_records_sql("SELECT * FROM {iassign_statement} s " .
+        " WHERE s.id != s.file");
+      $fs = get_file_storage();
+
+      // 4. percorrer o conjunto de atividades:
+      foreach ($iassign_statement_list as $iassign_statement_activity_item) {
+        
+        // 5. encontrar o arquivo, considerando os possíveis contextos:
+        $files = array();
+        foreach ($contexts as $context) {
+
+          $files = $fs->get_area_files($context, 'mod_iassign', 'exercise', $iassign_statement_activity_item->file);
+
+          // 6. se o arquivo for encontrado, fazer uma cópia do conteúdo, 
+          // com o itemid novo, atualizar o iassign_statement, e apagar o arquivo antigo:
+          if ($files) {
+            foreach ($files as $value) {
+              if ($value != null && $value->get_filename() != ".") {
+                // 6.A. Fazer uma cópia:
+                $newfile = $fs->create_file_from_storedfile(array('contextid' => $context, 'component' => 'mod_iassign', 'filearea' => 'exercise', 'itemid' => $iassign_statement_activity_item->id), $value);
+
+                // 6.B. Atualizar o registro da atividade para o arquivo novo:
+                $update_entry = new stdClass();
+                $update_entry->id = $iassign_statement_activity_item->id;
+                $update_entry->file = $newfile->get_itemid();
+                $DB->update_record("iassign_statement", $update_entry);
+
+                // 6.C. Remover o arquivo antigo:
+                $value->delete();
+              } else if ($value != null && $value->get_filename() == ".") {
+                // 6.C.I. Remover também os indicadores de diretório:
+                $value->delete();
+              }
+            }
+            break;
+          }
+        }
+                  
+      }
+    } // if ($oldversion < 2020102800)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+09/11/2020:
+
+
+:: editingbehavior ::
+
+editingbehavior = 0: para iGeom, iHanoi => ter que clicar no "Refazer atividade" : desabilita botao "enviar" ao entrar em atividade feita
+editingbehavior = 1: para iVProg => permite continuar edicao (do ponto que parou) : deixa habilitado o botao "enviar" em qq situacao
+title do botão
+editingbehavior = 2: para iFraction => não tem o botão enviar, o envio é contínuo
+
+:: submissionbehavior ::
+
+se editingbehavior=0, entao: trocar 'title' para 
+'Este iMA nao permite continuar edicao de solucao enviada. 
+Para editar, por favor, clique no botao 'Refazer atividade'"
+
+
+iassign_ilm: 2 novos campos 'editingbehavior' e 'submissionbehavior'
+
+Sendo:
+ id name version type editingbehavior  description url extension parent file_jar file_class width height enable timemodified author timecreated evaluate reevaluate
+ editingbehavior = 0: para iGeom, iHanoi => ter que clicar no "Refazer atividade"          : desabilita botao "enviar" ao entrar em atividade feita
+ editingbehavior = 1: para iVProg        => permite continuar edicao (do ponto que parou)  : deixa habilitado o botao "enviar" em qq situacao
+
+ submissionbehavior = 0: para iGeom, iVprog, iHanoi  => NAO trocar de pagina        
+ submissionbehavior = 1: para iFractions             => ao finalizar deve invocar iTarefa.finish_and_redirect()
+
+
+:: iassign_allsubmissions ::
+
+Criar nova tabela 'iassign_allsubmissions'.  Se a atividade estiver marcada para gravar todas, qdo aluno clicar no "avaliar", gravar nova entrada.
+
+No formulario para criar atividade, se o iMA for do tipo (1,0), mostrar opcao para gravar tudo
+No 'locallib', sempre que o aluno clicar no "avaliar"
+
+
+No iVProg
+
+-> mensagem de fechar a janela com edição
+
+
+-->> AFAZERES:
+
+
+
+
+
+
+
+
+
+
+
+
+
+iassign_ilm: 2 novos campos 'editingbehavior' e 'submissionbehavior'
+Sendo:
+ id name version type editingbehavior  description url extension parent file_jar file_class width height enable timemodified author timecreated evaluate reevaluate
+
+ editingbehavior = 0: para iGeom, iHanoi, iFractions => ter que clicar no "Refazer atividade"          : desabilita botao "enviar" ao entrar em atividade feita
+
+ editingbehavior = 1: para iVProg        => permite continuar edicao (do ponto que parou)  : deixa habilitado o botao "enviar" em qq situacao
+
+
+ @Igor: 
+  Finalizada a implementação do 'editingbehavior'
+
+
+ submissionbehavior = 0: para iGeom, iVprog, iHanoi  => NAO trocar de pagina        
+ submissionbehavior = 1: para iFractions             => ao finalizar deve invocar iTarefa.finish_and_redirect()
+
+
+Criar nova tabela 'iassign_allsubmissions'. Se a atividade estiver marcada para gravar todas, qdo aluno clicar no "avaliar", gravar nova entrada.
+
+No formulario para criar atividade, se o iMA for do tipo (1,0), mostrar opcao para gravar tudo
+No 'locallib', sempre que o aluno clicar no "avaliar"
+
+
+
+TODO
+
+1. 1 tabela nova: iassign_allsubmissions
+
+  @Igor:
+  Campos na tabela iassign_allsubmissions:
+    1. id
+    2. iassign_statementid
+    3. userid
+    4. timecreated
+    5. grade
+    6. answer
+
+
+2. 2 campos novos na tabela 'iassign_ilm': editingbehavior, submissionbehavior
+  
+3. 1 campo novo na tabela 'iassign_statement': store_all_submissions
+
+iMA:
+- getEvaluation(): tem que chamar o 'getEvaluation()' do iTarefa
+iTarefa:
+- Alterar com sua funcao 'getEvaluation()' com eventual codigo para gravar (senao ela e' vazia)
+
+
+
+
+30/11/2020:
+--> tabela ilm:
+- action_button
+  0: submission desabilitado
+  1: padrão. submission habilitado.
+
+--> se o ima possui autoavaliador e é do tipo exercício,
+trocar o rótulo do botão para 'Avaliar':
+  'roda o avaliador e envia o registro, 
+    clicando no avaliar, automaticamente vai ser registrado'
+  Verificar se a nota é maior ou menor
+