123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- 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
|